mirror of
https://github.com/microsoft/regorus.git
synced 2026-08-05 02:16:11 +00:00
no_std support (#232)
- Disable default features in dependencies - Use anyhow::Error::msg to map errors. Note: anyhow will itself be removed later. - lazy_static/spin_no_std used in no_std environments - ensure_no_std binary is built to target thumbv7m-none-eabi to ensure that there are no std dependencies. thumbv7m-none-eabi target has no std support. - The opa-no-std feature enables only those Regorus features that work with no_std. - Enable tests with no_std - Update sizes of regorus binary in README.md - Ensure that regorus example can be built with only std - Ensure that regorus example can be built with no_std Signed-off-by: Anand Krishnamoorthi <anakrish@microsoft.com>
This commit is contained in:
committed by
GitHub
parent
01fc234a33
commit
e86b590f91
@@ -1,11 +1,13 @@
|
||||
// Copyright (c) Microsoft Corporation.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#![allow(unused)]
|
||||
use lazy_static::lazy_static;
|
||||
use std::sync::Mutex;
|
||||
|
||||
use regorus::*;
|
||||
|
||||
#[cfg(feature = "arc")]
|
||||
// Ensure that types can be s
|
||||
lazy_static! {
|
||||
static ref VALUE: Value = Value::Null;
|
||||
@@ -14,6 +16,7 @@ lazy_static! {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(feature = "arc")]
|
||||
fn shared_engine() -> anyhow::Result<()> {
|
||||
let e_guard = ENGINE.lock();
|
||||
let mut engine = e_guard.expect("failed to lock engine");
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
[package]
|
||||
name = "ensure_no_std"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
anyhow = { version = "1.0.83", default-features = false }
|
||||
regorus = { path = "../..", default-features = false, features = ["opa-no-std"] }
|
||||
@@ -0,0 +1,16 @@
|
||||
// Copyright (c) Microsoft Corporation.
|
||||
// Licensed under the MIT License.
|
||||
#![no_std]
|
||||
#![no_main]
|
||||
|
||||
use core::panic::PanicInfo;
|
||||
|
||||
#[panic_handler]
|
||||
fn panic(_info: &PanicInfo) -> ! {
|
||||
loop {}
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn _start() -> ! {
|
||||
loop {}
|
||||
}
|
||||
@@ -225,6 +225,7 @@ fn invalid_line() -> Result<()> {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(feature = "std")]
|
||||
fn file_more_than_64_kb_size() -> Result<()> {
|
||||
let source = Source::from_file("tests/kata/data/large.rego")?;
|
||||
let mut lexer = Lexer::new(&source);
|
||||
|
||||
@@ -8,6 +8,3 @@ mod engine;
|
||||
mod lexer;
|
||||
mod parser;
|
||||
mod value;
|
||||
|
||||
#[cfg(feature = "arc")]
|
||||
mod arc;
|
||||
|
||||
Reference in New Issue
Block a user