Skip to content

Latest commit

 

History

History
109 lines (74 loc) · 4.32 KB

README.md

File metadata and controls

109 lines (74 loc) · 4.32 KB

Ristretto

ci Documentation Code Coverage Benchmarks Latest version License Semantic Versioning

JVM implementation with deterministic memory deallocation.

This is a work in progress and is not ready for production use.

Getting Started

ristretto java can be installed using the following methods:

Linux / MacOS

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/theseus-rs/ristretto/releases/latest/download/ristretto_cli-installer.sh | sh

Windows

irm https://github.com/theseus-rs/ristretto/releases/latest/download/ristretto_cli-installer.ps1 | iex

For more information, and additional installations instructions (cargo, homebrew, msi), visit the ristretto site.

Features

  • Deterministic memory allocation / deallocation
  • No tracing garbage collector
  • Runtime classes based on any version of AWS Corretto
  • Load classes from directories, jars, modules
  • Url class loading from jars and modules
  • Reading, writing, verifying classes
  • Verification of class files is supported, but is still a work in progress.

Limitations

Instructions

The Invokedynamic instruction is not implemented.

Threading

Threading is not implemented. The JVM has been structured to allow for threading in the future by utilizing async with the tokio runtime.

Runtime Native Methods

The Java runtime requires hundreds of native methods. This project aims to provide Rust equivalents for these methods on an as needed basis. Currently, only a small subset of these are implemented. If a native method is called that is not implemented, the program will panic. Please submit a pull request, or open an issue if you need a specific native method implemented.

Java Native Interface (JNI)

JNI is not implemented.

Security Manager

Support for the Security Manager is not implemented and there are no plans to implement it. The security manager has been deprecated; see: JEP 411

System.getSecurityManager() will always return null, and System.setSecurityManager() will throw an exception.

Finalizers

Support for finalizers is not implemented and there are no plans to implement it. Finalizers have been deprecated; see: JEP 421

Safety

These crates use #![forbid(unsafe_code)] to ensure everything is implemented in 100% safe Rust.

License

Licensed under either of

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

VSCode Development Container
GitHub Codespaces