Skip to content

Instantly share code, notes, and snippets.

@ericbmerritt
Created July 4, 2012 23:04
Show Gist options
  • Save ericbmerritt/3049977 to your computer and use it in GitHub Desktop.
Save ericbmerritt/3049977 to your computer and use it in GitHub Desktop.
Joxa 0.1.0 ChangeLog

Joxa 0.1.0 Changes

  • A large increase in both the quality and the quantity of documentation

  • Numerous bug fixes to the compiler

  • any and all functions added to joxa-lists

  • joxa-otp/behaviour! now correctly checks for a behaviour implementation.

  • Joxa now contains a built in concurrent compiler for multiple file compilation. This correctly does dependency ordering within the available files.

  • Added the :joxify keyword to both require and use namespace clause. This alias functions that contain '_' to contain '-' instead. So for example (require (proplists :joxify)) would make proplists/get_value available as proplists/get-value as well. While (use (proplists :joxify :only (get-value/2))) would allow get-value to be used directly instead of get_value.

  • The use clause for namespaces no longer supports :as

  • You may now use docstrings in functions. They are not yet available at runtime but should be in a future release.

  • Complex use clauses should now behave in a less surprising way.

  • All non-matching special forms in the compiler now have a * prefix. For example the non-matching primitive let is now let*. This allows macro based matching forms to use those names in use clauses.

  • Much better error reporting for macro failures

  • Joxa now uses rebar and can be a dependency in rebar projects

  • Empty top level forms, ie (do ()) and () are now supported (and ignored). This allows macros to exist as check functions that do not generate code.

  • Packages have been removed from Joxa

  • The joxa command now supports --pa and --pz

  • defspec can now be declared for remote namespaces. This allows for mutually recursive modules in joxa.

  • You may no longer embed spec information directly in the function declaration.

  • Vastly simplified the bootstrap procedure for Joxa developers.

  • Modules are no longer supported in Joxa. Instead namespaces using the keyword ns are supported. for example (module my-foo (require erlang)) becomes (ns my-foo (require erlang)).

  • Multiple namespaces may exist in the same file.

  • Emacs mode is slightly more accurate in syntax highlighting

  • Joxa now supports (attr pragma native) as a module attribute. This allows the module implementor to indicate his knowledge that the module would do well hipe compiled.

  • Joxa now supports aggressive inlining. Finally definline is fully respected and other inlining and optimization opportunities are taken as they are found. It is now recommended that Joxa only be run on ERTS 5.9 or greater (for line numbers).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment