- 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-rubyexecutable 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
pris no longer a K Lambda primitivewrite-byteadded as K Lambda primitiveopenno 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 --
quitno 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, andtlstrnow throw errors catchable bytrap-errorwhen type violations occur with their arguments.tlstrnow raises an error when applied to an empty stringsetandvaluenow require their first arugment to be a symbolhdandtlnow raise an error when applied to non-listsfreezenow 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
doin 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::Sheninstance - 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 --
andandormay 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
srreplexecutable