Frequently Asked Questions
Why Julia
The JuliaLang and (JuliaPro) is an open-source Just-In-Time (JIT) & optionally precompiled, strongly-typed, and high-performance programming language. The algorithmic code is implemented in Julia for many reasons, such as agile development, high level syntax, performance, type safety, parallel computing, dynamic development, cross compilable (with gcc and clang) and foundational cross-platform (LLVM) technologies. See JuliaCon2018 highlights video. Julia can be thought of as either {C+, Mex (done right), or as a modern Fortran replacement}.
Is Caesar.jl limited to Julia? No.
The Caesar.jl project is expressly focused on making this algorithmic code available to C/Fortran/C++/C#/Python/Java/JS. Julia itself offers many additional interops. ZMQ and HTTP/WebSockets are the standardized interfaces of choice, please see details at the multi-language section). Consider opening issues or getting in touch for more information.
Can Julia be Embedded into C/C++
Yes, see the Julia embedding documentation page.
Current Julia version, v1.0.x
Caesar.jl and packages are currently targeting Julia v1.0.x (2019Q1). See progress for Julia v1.1.x here.
Just-In-Time Compiling (i.e. why are first runs slow?)
Julia uses just-in-time compilation (unless already pre-compiled) which takes additional time the first time a new function is called. Additional calls to a function is fast from the second call onwards since the static function is now cached and ready for use.
Static, Shared Object .so
Compilation
Packages are already compiled to static objects (.ji
files), but can also be compiled to more common .so
files. See this AOT vs JIT compiling blog post for a deeper discussion. Also see this Julia Binaries Blog.
Note recent developments announced on discourse.. Also see new brute force sysimg work at Fezzik.jl.
ROS Integration
ROS integration is a priority for this project and will accompany the so-called 'prime time' release of the code. ROS and ZMQ interfaces are closely related.
Note the present focus (2018Q3-2019Q2) is to stabilize the ZMQ interface.
Voice Please add your voice of support or suggestions on ROS integration here.
How does JSON-Schema work?
Caesar.jl intends to follow json-schema.org, see step-by-step guide here.