Fixes and traces

Tuesday, August 9th, 2011

Several recent changes to report to Clojush, which is available as usual from:

20110629: - Fixed abbreviate-tagged-code-macros printing of empty lists.
          - Added seq condition to walklist to permit walking of seqs that
            aren't actually full-fledged lists.
20110702: - Several fixes/refinements to tagged-code macros: 
            - Fixed incorrect no-op of arg-free calls with empty tag space.
            - Added :additional_args to tagged-code macro structure; the
              value should be a list of items and these will be executed
              in order before calling the macro's instruction.
            - Added optional 5th arg to tagged-code-macro-erc; this should
              be a function of zero args that will be called to produce
              the value of :additional_args (e.g. if you want to have one
              random integer arg then you could specify a 5th arg of
              (fn [] (list (lrand-int 101))).
            - Changed format produced by abbreviate-tagged-code-macros to
              handle :additional_args and to be slightly more concise.
20110714: - Added "trace" argument to eval-push and run-push. If this is
            true then the resulting state will map :trace to a list of
            executed instructions and literals, in reverse order of
            execution. If the argument is :changes then instructions that
            have no effect on the state will be excluded.


Sunday, February 28th, 2010

A first version of Push3/PushGP in Clojure is available from It’s currently roughly the same stuff as was implemented in the first versions of Schush, but Clojure makes it easy to do some nice things like taking advantage of multi-core CPUs. When I run this on a 2-core machine I sometimes see CPU utilizations approaching 200% — I hope to try it on an 8-core machine soon…