Feature Flags
By default, the glsp crate's only transitive dependencies are smallvec, owning_ref,
stable_deref_trait, fnv, and the Rust standard library.
$ cargo tree
glsp v0.2.0
+-- glsp-engine v0.2.0
| +-- fnv v1.0.7
| +-- owning_ref v0.4.1
| | +-- stable_deref_trait v1.1.1
| +-- smallvec v1.4.0
+-- glsp-proc-macros v0.2.0
| +-- glsp-engine v0.2.0 (*)
+-- glsp-stdlib v0.2.0
+-- glsp-engine v0.2.0 (*)
+-- glsp-proc-macros v0.2.0 (*)
+-- smallvec v1.4.0 (*)
All large or non-essential dependencies are feature-gated, and all features are disabled by default.
"unsafe-internals"
By default, glsp's implementation doesn't use any unsafe code at all. This is guaranteed
using #![forbid(unsafe_code)].
With the "unsafe-internals" feature enabled, a small amount of unsafe code is switched on in
the glsp-engine crate. This makes the interpreter run roughly twice as
fast.
Note that glsp's public API is always intended to be safe, even when the "unsafe-internals"
feature is enabled. The purpose of this feature flag is to mitigate the safety impact of any
undetected bugs which are internal to the glsp crate.
Even with "unsafe-internals" disabled, glsp may depend on crates which themselves use unsafe
internally - currently smallvec, owning_ref and optionally bincode. As usual,
you shouldn't trust this crate's safety unless you also trust its dependencies.
"serde"
Introduces a dependency on the serde crate, but not serde_derive.
Implements Serialize and Deserialize for Val, Root, Arr, Tab, Str and
Sym. Note that the serializer will gracefully fail if it encounters a non-representable
type, or a type which contains reference cycles. Gensyms and textually-ambiguous
symbols can be serialized and deserialized, even though they're not representable.
"compiler"
Introduces a dependency on the "serde" feature, as well as the crates bincode, flate2,
syn, quote, proc_macro2 and serde_derive.
This feature flag enables GameLisp source code to be pre-compiled into an efficient binary
format. Provides the compile! and eval! macros, and the glsp::load_and_compile
and glsp::load_compiled functions. See the Compilation chapter for
more information.