jlrs 0.18.0-beta.2

jlrs provides bindings to the Julia C API that enables Julia code to be called from Rust and more.
Documentation
[package]
name = "jlrs"
version = "0.18.0-beta.2"
authors = ["Thomas van Doornmalen <thomas.vandoornmalen@gmail.com>"]
description = """
jlrs provides bindings to the Julia C API that enables Julia code to be called from Rust and more.
"""
documentation = "https://docs.rs/jlrs"
homepage = "https://github.com/Taaitaaiger/jlrs"
repository = "https://github.com/Taaitaaiger/jlrs"
readme = "../README.md"
keywords = ["Julia", "math", "mathematics", "bindings", "ffi"]
categories = ["api-bindings", "mathematics"]
license = "MIT"
edition = "2018"
rust-version = "1.65"

[features]
# The only default feature is the prelude module
default = ["prelude"]

# Enable all features except any version features
full = ["prelude", "sync-rt", "tokio-rt", "async-std-rt", "jlrs-ndarray", "f16", "pyplot", "internal-types", "uv", "jlrs-derive"]


# Runtimes

# Enable sync runtime
sync-rt = []
# Enable async runtime
async-rt = ["async", "deadqueue", "futures-concurrency"]
# Enable async-std as backing runtime
async-std-rt = ["async-rt", "async-std"]
# Enable tokio as backing runtime
tokio-rt = ["async-rt", "tokio"]


# Utilities

# Enable task and channel traits used by the async runtime
async = ["futures", "crossbeam-channel", "async-trait"]
# Enable `ccall` module for use from `ccall`ed Rust functions
ccall = ["jlrs-macros/ccall", "threadpool"]
# Enable using `f16` as a layout for `Float16` data
f16 = ["half"]
# Enable all internal types
internal-types = []
# Enable converting a Julia array to an `ArrayView(Mut)` from ndarray
jlrs-ndarray = ["ndarray"]
# Provide several extra field accessor methods.
extra-fields = []

jlrs-derive = ["jlrs-macros/derive"]

# Enable the `prelude` module
prelude = []
# Enable the `pyplot` module
pyplot = []
# Enable `ccall` feature, link `libuv`, and enable `CCall::us_async_send`
uv = ["jl-sys/uv", "ccall"]

# Julia version

# Link Julia 1.6
julia-1-6 = ["jl-sys/julia-1-6", "jlrs-macros/julia-1-6"]
# Link Julia 1.7
julia-1-7 = ["jl-sys/julia-1-7", "jlrs-macros/julia-1-7"]
# Link Julia 1.8
julia-1-8 = ["jl-sys/julia-1-8", "jlrs-macros/julia-1-8"]
# Link Julia 1.9
julia-1-9 = ["jl-sys/julia-1-9", "jlrs-macros/julia-1-9"]
# Link Julia 1.10
julia-1-10 = ["jl-sys/julia-1-10", "jlrs-macros/julia-1-10"]


# Target or link a specific Julia build or arch.

# Link debug build of Julia
debug = ["jl-sys/debug"]
# Link 32-bits version of Julia on Linux
i686 = ["jl-sys/i686"]
# Don't link Julia, useful when building a shared library that will be
# loaded by and used from Julia.
no-link = ["jl-sys/no-link"]
# Compile from BinaryBuilder's cross-compilation environment
yggdrasil = ["jl-sys/yggdrasil"]
# Cross-compile to Windows
windows = ["jl-sys/windows", "jlrs-macros/windows"]
# Cross-compile to macOS
macos = ["jl-sys/macos"]

# Internal

# Used to generate docs for docs.rs
docs = ["jl-sys/docs", "full", "julia-1-10"]

[dependencies]
cfg-if = "1"
jl-sys = { version = "0.20", path = "../jl_sys" }
jlrs-macros = { version = "0.1", path = "../jlrs_macros" }
smallvec = "1"
thiserror = "1"
atomic = "0.5"
hashers = "1"
once_cell = "1"

threadpool = { version = "1", optional = true }
async-std = { version = "1.12", features = ["unstable"], optional = true }
async-trait = { version = "0.1", optional = true }
crossbeam-channel = { version = "0.5", optional = true }
futures = { version = "0.3", optional = true }
half = { version = "2", optional = true }
ndarray = { version = "0.15", optional = true }
tokio = { version = "1", optional = true, features = ["rt", "time", "sync"]}
deadqueue = { version = "0.2", optional = true, features = ["resizable"]}
futures-concurrency = { version = "7.0", optional = true }

[dev-dependencies]
tokio = { version = "1", features = ["macros", "rt-multi-thread", "rt", "time", "sync"]}
once_cell = "1"

[package.metadata.docs.rs]
features = ["docs"]