Skip to content

Udat

Latest
Compare
Choose a tag to compare
@vygr vygr released this 16 Aug 15:45
· 4 commits to master since this release

Udat

Mainly work on some ease of use extras, and some reworking of a few areas that improves the reader throughput.

  • Terminal app fix for user input.

  • New (bit-mask mask ...) -> val function and
    (bits? val mask ...) -> :t | :nil macro predicate defined to go with the
    (bits) bitmask definition function.

  • New (eval-list list [env]) -> list inplace list element evaluation primitive.
    This is making the :repl_eval_list method available at the user level.

  • Improvements to the case macro. Lots of new features since this was first
    written !

  • New (macrobind) macro.

  • New (static-qqp) macro that only does a prebind pass, no static macroexpand !
    GUI UI macros now use this.

  • Major tidy up of the lib/asm/vp.inc file. Use of static-q* where possible
    and removal of redundant type conversions.

  • Reference counted netid object for temp mailboxes. Create one via
    (mail-mbox) and no need to explicitly free anymore. (free-select) call is
    now gone, and (alloc-select) is replaced by the (task-mboxes) function which
    creates the select list using (task-mbox), for the first entry, and
    (mail-mbox) for the rest.

  • Reworked the lib/task/local.inc class. Added a few more options as well as
    tidying up the code. As a result the build times have improved again. Worth
    spending some of this gain on new VP optimisation checks.

  • opt-redundant-branch test added to vpopt.inc. This test looks to see if a
    constant based branch is being done when we already loaded a constant into that
    register that we can static eliminate. This can happen with inline code
    embedding, AND as branch instructions are a KILL op for other searches, it's
    worth checking for.

  • Rework of the symbol interning system for the entire OS and Lisp engine. Removed
    redundant methods and streamlined the base method used by lisp :read_sym to
    operate directly from the stream buffers without intermediate copies or string
    object churn.

Enjoy

Chris