[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

goo 0_153 now available



goo 0_153 is now available from www.googoogaga.org along with v44 of
the goo doc.  many changes have been made since 0_146 including a
number of internal changes to the vm, analysis, and optimization which
are still currently disabled.  other speed improvements are available
including runtime tweaks and loop optimizations which make the current
release significantly faster than 0_146.  there are a few new features
and one incompatible change in the syntax of macro definitions.

i am thinking about changing a few things more that would require
existing code to be modified, but i wanted to get a release out asap.
the changes i have in mind are to change:

  o the -setter suffix to -set
  o file access to signal a condition on eof
  o object printing to use a to-doc protocol allowing pretty printing etc

included below is the long list of changes.

happy new year.

jonathan

=== 0.153 ===

summary

added

  exp to be (op pow $e _)
  enum enum => enum
  lst*

fixed

  peek to correctly return EOF when appropriate
  bit? tests to return boolean

changed

  ds syntax is like other binding definitions (ds when (...) ...)

=== 0.152 ===

summary

added

  inlining adjectives for df and dm and propagation to runtime
  prop access typing and optimizing
  known call typing and optimizing
  pretty printer
  inline adjectives to a bunch of high frequency methods that need em

fixed 

  sequentialize to be proper tail recursive
  vm-dup to dup correct top of stack
  nary mets in vm
  saved and restored pc in vm-run
  some time accessors to be side-effectable

changed
  = on <num> <num> to use contagious-call

=== 0.151 ===

summary

  lots of changes towards dynamic compilation and a reorg towards more
  understandable and cleaner code

added

  binding ref tracking for slimmer dynamically generated code
  lots more of the typist including loops
  method-application ast for real
  split out module any log chr mag
  arbitrary lit mechanism for ref'ing methods next-method lists etc
  recursive error aborting mechanism
  fun-counting mechanism and profiler
  support for dletting arbitrary settable lhs'
  packing-as
  <bot> and $bot to types

fixed

  decision-tree code working again
  lots of bugs in vm to get test suite through
  definition in ast-eval to return value as is done with other backends

removed

  class-type-cache
  uses of %pair from ast generated code 
  make-immutable from read

changed

  empty? and empty to nul? and nul resp.
  split out fun-info into separate object
  created stable stubs for fun/class creation
  changed nary fix-let conversion to create tup's for opts
  auto-export boot bindings
  primitives to use rep earlier

=== 0.150 ===

summary

  major overhaul reorging files and improving speed also added dp! and d.

fixed

  vm box evaluation 
  vm dg treatment

changed

  split up grt runtime boot
  ast-print to work
  typist coming to life
  call-analysis moved to optimize
  removed loop analysis of primitive calls 
  changed all primitive loop calls to use rep
  string-hash to use low-elt
  inlined more of dispatch

added

  files goo/fun goo/class goo/functional goo/loc goo/sym 
        goo/%system.c goo/%math.c goo/io/%port.c
  box removal optimization and binding-closed-over? to support it
  dp! and now dp does NOT define a setter
  d.
  special case of ast-walk for programs
  vm-eval mode

=== 0.149 ===

summary

  added next experimental version of {} syntax, improved g2c code gen
  and reg allocation, merged call and loop analysis, 

changed

  locals, fix-let, and loops no longer have their own registers
  and macro to not use a let tmp
  collect-registers to use non-side-effecting ast-walk
  {} syntax to mainly mean seq 
    '{' ,@forms '}' == (seq ,@forms)
  but with a \ means fun
    '{' ,@vars \ ,@body '}' == (fun (,@vars) ,@body)

added

  added g2c if optimization to avoid redundant false checks which
    can't be optimized by gcc
  port-filename to file-ports 
  improved write method for file-ports

=== 0.148 ===

summary

  added <loop> and <loop-application> and inlining of loops.  this
  adds nested loops to goo and greatly improved emitted code.

changed

  changed dispatch to use faster int test for prop access
  specialized napp for opts last elt

added

  ast-eval's for <loop> and <loop-application>
  or/set macro

=== 0.147 ===

summary

  vm working with low level support and improved initialization

changed

  added vm state to lowlevel runtime grt so that it will mesh with nlx
  better vm tracing
  next-methods support to vm
  nary support to vm
  bound? to take a default value
  made pe-msg be a non ct-also fun so that it would be faster to expand msg*
  sup and app-sup to use @checked-next-methods to make their expansions smaller

added

  support for multiple runs of vm-eval
  req-sig-specs
  more num and col tests

fixed

  add method for str's