- Added
glsp::has_rglobal
- The
has?
function can now be used to test whether a property is present in anrdata
cargo clippy
triggered many warnings- Most doctests failed when running
cargo test
- The
arr!
macro did not support trailing commas - Calling
glsp::add_rglobal
orglsp::take_rglobal
in anRGlobal
's destructor would cause a panic inRuntime
's destructor - Bindings like
(let a b)
, whereb
is a captured local, were encoded incorrectly - The
has?
function would fail, rather than returning#f
, when receiving a non-collection as thecoll
parameter
- Added the
sym!
macro, as a convenient alternative toglsp::sym(x).unwrap()
- Added
glsp::load_str
and(load-str)
, as a convenient alternative toparse-all
followed byeval-multi
- Defined a total ordering for floats: NaNs now compare equal to other NaNs, and compare greater than all non-NaN numbers
- Added
sort
andsort_by
methods to theDequeOps
trait - Added
is_representable
andis_serializable
methods toArr
,Tab
,Sym
andVal
- Added the
glsp::is_representable_sym
function - The
backquote!
macro can now unquote local variables by reference,~&var_name
- Added
Gc
weak pointers (along withGcVal
,RGc
,RClassBuilder::trace
andglsp::write_barrier
) to permitRData
to store pointers to other heap-allocated objects - The reference manual now suggests a
+
suffix for functions whichyield
- Added a syntax-highlighting package for Visual Studio Code
- The
GSend
andGStore
auto traits have been removed- The
optin_builtin_traits
andnegative_impls
nightly features are no longer required - There is no longer any restriction on variables captured or returned by
Runtime::run
Root
,RGlobalRef
,RGlobalRefMut
,RRef
andRRefMut
can now be stored in anRData
- The
RFn
,RData
, Rust globals, and the function-wrapping code have been overhauled- The
min_specialization
,rustc_attrs
andunboxed_closures
nightly features are now required - The
RStore
trait andrdata!
macro have been removed.RData
may now store any'static
Rust type - Associating an
RClass
with a Rust type is now a dynamic operation, usingRClassBuilder
- The
Lib
trait has been renamed toRGlobal
, and thelib!
macro has been removed RFn
s are now stored on the garbage-collected heap, asRoot<RFn>
- The
rfn!
macro has been removed. Function pointers and closures can now be passed directly toglsp::rfn
and similar functions - Capturing closures can now be passed to
glsp::rfn
, as long as they're'static
- Rest parameters are now captured using a wrapper type
Rest<T>
, rather than a slice&[T]
- Optional parameters will now be set to
None
when their argument is#n
- The
meth
,has-meth?
,meth-name
andcall-meth
have been renamed tomet
,has-met?
,met-name
andcall-met
respectively- Improved error message when glsp functions are called with no active
Runtime
- The
ord
function now accepts strings, symbols and arrays sort
's comparison function now defaults toord
PartialOrd
,Ord
andEq
are now implemented, where appropriate, forVal
,Num
,Root
,Arr
,Str
,Tab
andSym
- Removed the
free!
function.RData::free
can still be called from Rust code - The
rand-select
andchance
functions have been renamed torand-pick
andchance?
- The
coin-flip
function has been removed glsp::is_valid_sym_str
has been renamed toglsp::is_valid_sym
IntoVal
,FromVal
andIntoCallArgs
are now implemented for arrays of any length- The
syms!
macro now defines anew()
method which returnsSelf
, rather thanGResult<Self>
(int)
and(flo)
would not accept characters when called as an operatorRData
destructors triggered panics every time they interacted with the runtime- The
syms!
macro required some names to be in scope, and emitted an incorrect struct name RGlobal::borrow
andRGlobal::borrow_mut
had incorrect error messages under some circumstances- Calling
glsp::take_rglobal
would cause a panic inHeap
's destructor - The parser would panic when it encountered a string which contained a multi-byte character
(defer)
and(defer-yield)
would overwrite some local variables and scratch registers
Initial release.