Lemon is a framework for building Javascript runtime software, built on the Chrome V8 Javascript Engine.
-
C++ bindings
Integrated support for javascript to c++ bindings and viceversa.
-
Object oriented
Lemon lets you build your applications with a simple and scalable object oriented approach.
-
Single and multi threaded
Lemon runs on a single thread by default but has support for running on multiple threads.
Video introduction: https://www.youtube.com/watch?v=5fWIf2A6Z_s
A simple example of an application written in Lemon looks like this:
void App::Start(int argc, char* argv[]) {
for (int i = 1; i < argc; ++i) {
// Get filename of the javascript file to run
const char* filename = argv[i];
// Create a new context for executing javascript code
Local<Context> context = this->CreateLocalContext();
// Enter the new context
Context::Scope contextscope(context);
// Run the javascript file
this->RunJsFromFile(filename);
}
}
You can find this example in the 'app' folder, in the file App.cpp.
The example does the following:
- Calls the Start method which automatically starts the application inside a virtual machine.
- Loops each argument given from a command line, each argument is expected to be a javascript file.
- Creates a new context and enters the context.
- Calls the RunJsFromFile method which executes the code inside a Javascript file.
A context is an execution environment that allows Javascript to be executed inside the virtual machine.
Lemon currently has build support for Linux only.
Download the repo
git clone https://github.com/nordin-johan/lemon.git
Navigate to the directory
cd lemon
Build
make
You can now run ./lemon App.js
in your terminal to try it out, it should print the current version of Lemon.