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 ofstatic-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 tovpopt.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 bylisp :read_sym
to
operate directly from the stream buffers without intermediate copies or string
object churn.
Enjoy
Chris