- Upgrade to Shen 19.1
- STDERR is now available via sterror
- Added
(exit N)
to exit the process with a given return code
- Fixed Shen version in Gem description
- Added
shen-ruby
executable for running ShenRuby programs outside of REPL- Including support for shebang scripts
- Upgrade to Shen 18.1
- Upgrade to Klam 0.0.9 for performance improvements
- Evaluating "c#13;" no longer triggers the message "warning: encountered \r in middle of line, treated as a mere space."
- Upgrade to Shen 17
- Shen is now BSD-licenesed, making ShenRuby BSD/MIT licenesed
- The arity of block arguments to Ruby methods no longer needs to be specified. Now all block arguments are denoted by a
&
followed by the function to pass as the block. Any usages of the old syntax, e.g.&2
, must be updated to&
.
- Shen -> Ruby interop
- See README.md for details
- KLambda implementation switched to Klam. This has many implications, including:
- Significant performance increase. E.g., the Shen Test Suite now runs 2.5 times faster than with ShenRuby 0.10.0.
- Tail call optimization applies only to self tail calls
- The environment extends BasicObject rather than Object
- Shen functions are directly installed as methods on the ShenRuby::Shen instance.
- Many primitives are inlined.
- Primitives are less strict with respect to type errors, relying on the Shen type checker to do this work when type checking is enabled.
- E.g., `(+ "a" "b") no longer throws a type error
- Ruby->Shen interop has changed as a result of the switch to Klam and in preparation for more substantial Ruby<->Shen interop to come. Notably:
- Underscores in method names are no longer coerced to hyphens before invoking Shen functions. Use
__send__
to invoke Shen functions having names that are not valid Ruby method names. - Ruby arrays are no longer automatically coerced to Shen lists and vice versa.
- Underscores in method names are no longer coerced to hyphens before invoking Shen functions. Use
- Upgrade to Shen 16
- Upgrade to Shen 15
- Upgrade to Shen 14.2
- Upgrade to Shen 14
- Removed JRuby from "known limitations". ShenRuby runs and passes the test suite under JRuby 1.7.8.
- Upgrade to Shen 13
pr
is no longer a K Lambda primitivewrite-byte
added as K Lambda primitiveopen
no longer takes stream type as its first argument
- Clarify license
- Upgrade to Shen 12
- KLaSC compliance fixes:
- if now supports partial application
- Upgrade to Shen 11
- KLaSC compliance fixes:
- absvector now raises an error when applied to a negative number
- Upgrade to Shen 9.1
- Upgrade to Shen 9.0
- Issue 8 --
quit
no longer raises a type error when invoked with type checking enabled. - Fixed many instances of ShenRuby's behavior not matching the Shen CLisp reference implementation:
absvector
,address->
,<-address
,intern
,n->string
,pos
,string->n
, andtlstr
now throw errors catchable bytrap-error
when type violations occur with their arguments.tlstr
now raises an error when applied to an empty stringset
andvalue
now require their first arugment to be a symbolhd
andtl
now raise an error when applied to non-listsfreeze
now supports partial application with zero arguments
- No code changes. Updates Gemspec to refer to Shen 8.0.
- Upgrade to Shen 8.0
- Graceful handling of Control-C in ShenRuby REPL [Bruno Deferrari]
- Handle
do
in the K Lambda compiler so that it is eligible for tail call elimination [Bruno Deferrari] - Ruby->Shen interop
- Shen functions can now be called from Ruby by invoking the corresponding method on the
ShenRuby::Shen
instance - Ruby arrays are coerced back and forth to K Lambda lists
- Underscores in Ruby symbols are coerced back and forth to hyphens in Shen symbols
- Shen functions can now be called from Ruby by invoking the corresponding method on the
Compared to ShenRuby 0.1.0, 50% faster Shen REPL launch and 38% faster execution of the Shen Test Suite achieved by:
- Faster application of K Lambda primitives when not partially applied
- Inlining of list primitives when not partially applied
- Issue 4 --
and
andor
may now be partially applied - Issue 5 -- the error raised by applying too many arguments to a function is now caught by
trap-error
.
- First public release
- Shen 7.1
- Shen REPL available via
srrepl
executable