libcubescript/README.md

40 lines
1.7 KiB
Markdown
Raw Normal View History

2015-07-31 20:53:29 +02:00
# libcubescript
2016-08-27 20:26:52 +02:00
Libcubescript is an embeddable implementation of the Cubescript scripting
language. Cubescript is the console/config language of the Cube engines/games
(and derived engines/games). It's a simplistic language defined around the
idea of everything being a string, with Lisp-like syntax (allowing various
control structures to be defined as commands).
2015-07-31 20:53:29 +02:00
2016-08-27 20:26:52 +02:00
Libcubescript is originally based on the implementation from the Cube 2 engine,
but it's largely rewritten. Here are some of the benefits over the original
implementation:
2015-08-08 18:24:05 +02:00
2016-08-27 20:26:52 +02:00
* Independent implementation that can be embedded in any project
* No global state - multiple Cubescripts can be present within a single program
* Modern C++14 API (no macro mess like in the original)
* C++14 lambdas can be used as commands (including captures and type inference)
* Clean codebase that is easy to read and contribute to
* Core types can be changed as needed at compile time (larger floats? no problem)
* Allows building into a static or shared library, supports `-fvisibility=hidden`
Upcoming features:
* Thread safety (safely call into a single Cubescript state from multiple threads)
* Custom allocator support (control over how heap memory is allocated)
The API is currently unstable and a work in progress. The codebase itself is
also changing very quickly.
The only dependency is OctaSTD:
https://git.octaforge.org/tools/octastd.git/
2015-08-08 18:24:05 +02:00
https://github.com/OctaForge/OctaSTD
2016-08-27 20:26:52 +02:00
If OctaSTD can work on your system, so can libcubescript.
2015-08-08 18:24:05 +02:00
2016-08-27 20:26:52 +02:00
The supplied Makefile builds a static library on Unix-like OSes. Link this
library together with your application and everything should just work.
2016-02-23 23:26:23 +01:00
2016-02-07 22:22:39 +01:00
See COPYING.md for licensing information.