Designed from the ground up with interoperability in mind, with an easy to use plug-and-play interface.
Anima is to C++ what Lua is to C: A platform designed for embedding in other applications.
Don't have that stop you from using it by itself, though. It is just as remarkable as a standalone one.
Anima is designed to...
Easily call C++ from inside the ART, and vice-versa.
Shared libraries are even easier than before.
// In breve:
// Declare [C++ -> ART] mapping call:
@Expose(name = "myARTFunction")
artCall :: () -> void { /* ... */ }
// Declare [ART -> C++] mapping call (RunTime-specific):
@Native(name = "myNativeFunction")
nativeCall :: () -> int64
// Declare [ART -> C++] mapping call (ART-compatible shared library):
@Shared(name = "myLibraryFunction", lib = mylib)
libCall :: () -> string
// In c++:
// Invoke exposed function:
// [env] here represents your ART engine
env.expose<void()>("myARTFunction").invoke();
// Register a native function:
// Inside your ART implementation class
context.art.addNativeCall("myNativeFunction", /* Your function here */);
Values are handled via Reference Counting, removing the need for background garbage collection.
Write more deterministic code with ease.
using import core
@Main
main :: () -> void {
IO.writeLine("Hello, World!")
}
// Or, in one line:
@Main _ :: () => (import core).IO.writeLine("Hello, World!")
Simplicity meets modernity.
Write less and make more.
Breve is...
These are just some of the programming styles supported in breve:
Your style and your ways, without the need for pesky metatables or wacky globals.
Statically-typed by design,
ensuring your code will run
(and be ran) as intended.
Only check types because you
actually need to,
not because you have to.
Designed to be fast to write,
with the least amount of friction in the way
of you and your development.
Write less boilerplate,
and skip to the good parts.
@shared["av2console":"av2/console/writeLine_string"]
void(str) print
push "Hello, "
push "World!"
add
call print
Assembly made easy.
Made with clarity and ease-of-use in mind.
Want to create your own language for the ART?
Just make it output Minima code, and use the
standard assembler minimac
as the final step!