Introduction
Getting started
1.
Dependencies
1.1.
Julia
1.2.
Rust
1.3.
C
2.
Basics
2.1.
Project setup
2.2.
Scopes and evaluating Julia code
2.3.
Managed data and functions
2.4.
Casting, unboxing and accessing managed data
2.5.
Loading packages and other custom code
Getting familiar
3.
Targets
3.1.
Using targets and nested scopes
3.2.
Target types
3.2.1.
Local targets
3.2.2.
Dynamic targets
3.2.3.
Weak targets
4.
Types and layouts
4.1.
isbits layouts
4.2.
Inline and non-inline layouts
4.3.
Union fields
4.4.
Generics
5.
Arrays
5.1.
Creating arrays
5.2.
Accessing arrays
5.3.
Mutating arrays
5.4.
ndarray
5.5.
Tracking arrays
6.
Exception handling
6.1.
Parachutes
7.
Bindings and derivable traits
7.1.
Generating bindings
7.2.
Customizing bindings
Other runtimes
8.
Multithreaded runtime
8.1.
Garbage collection, locks, and other blocking functions
9.
Async runtime
9.1.
Blocking tasks
9.2.
Async tasks
9.3.
Persistent tasks
9.4.
Combining the multithreaded and async runtimes
Dynamic libraries
10.
ccall basics
10.1.
Argument types
10.1.1.
Arrays
10.2.
Return type
10.3.
Dynamic libraries
10.4.
Custom types
10.5.
Yggdrasil
11.
julia_module!
11.1.
Constants
11.2.
Functions
11.2.1.
Managed arguments
11.2.2.
Array arguments
11.2.3.
Typed values
11.2.4.
Typed layouts
11.2.5.
Returning managed data
11.2.6.
CCallRef
11.2.7.
Throwing exceptions
11.2.8.
GC-safety
11.3.
Opaque and foreign types
11.3.1.
OpaqueType
11.3.1.1.
Without generics
11.3.1.2.
With generics
11.3.1.3.
With restrictions
11.3.1.4.
Other attributes
11.3.2.
ForeignType
11.4.
Generic functions
11.4.1.
Type environment
11.5.
Type aliases
11.6.
Yggdrasil and jlrs
Other topics
12.
Keyword arguments
13.
Safety
14.
When to leave things unrooted
15.
Caching Julia data
16.
Cross-language LTO
17.
Testing applications
18.
Testing libraries
Light
Rust
Coal
Navy
Ayu
jlrs tutorial
Targets