Compare commits

...

1 Commits

Author SHA1 Message Date
imxyy1soope1 112777e1b9 temp 2026-03-21 16:00:53 +08:00
7 changed files with 3525 additions and 56 deletions
+3 -3
View File
@@ -10,7 +10,7 @@ use rustyline::DefaultEditor;
use rustyline::error::ReadlineError; use rustyline::error::ReadlineError;
#[derive(Parser)] #[derive(Parser)]
#[command(name = "nix-js", about = "Nix expression evaluator")] #[command(name = "fix", about = "Nix expression evaluator")]
struct Cli { struct Cli {
#[command(subcommand)] #[command(subcommand)]
command: Command, command: Command,
@@ -40,8 +40,8 @@ struct ExprSource {
file: Option<PathBuf>, file: Option<PathBuf>,
} }
fn run_compile(runtime: &mut Runtime, src: ExprSource, silent: bool) -> Result<()> { fn run_compile(_runtime: &mut Runtime, src: ExprSource, _silent: bool) -> Result<()> {
let src = if let Some(expr) = src.expr { let _src = if let Some(expr) = src.expr {
Source::new_eval(expr)? Source::new_eval(expr)?
} else if let Some(file) = src.file { } else if let Some(file) = src.file {
Source::new_file(file)? Source::new_file(file)?
+1 -1
View File
@@ -109,7 +109,7 @@ impl Runtime {
token, token,
strings, strings,
source: sources.last().unwrap().clone(), source: sources.last().unwrap().clone(),
scopes: [Scope::Global(global_env)].into_iter().chain(extra_scope.into_iter()).collect(), scopes: [Scope::Global(global_env)].into_iter().chain(extra_scope).collect(),
with_scope_count: 0, with_scope_count: 0,
arg_count: 0, arg_count: 0,
thunk_count, thunk_count,
File diff suppressed because it is too large Load Diff
+7
View File
@@ -34,6 +34,13 @@ impl<const N: usize, T> Stack<N, T> {
} }
} }
pub(super) unsafe fn push_unchecked(&mut self, val: T) {
unsafe {
self.inner.get_unchecked_mut(self.len).write(val);
}
self.len += 1;
}
pub(super) fn push(&mut self, val: T) -> Result<(), T> { pub(super) fn push(&mut self, val: T) -> Result<(), T> {
if self.len == N { if self.len == N {
return Err(val); return Err(val);
+1460 -51
View File
File diff suppressed because it is too large Load Diff
-1
View File
@@ -7,7 +7,6 @@ mod validation;
pub use config::StoreConfig; pub use config::StoreConfig;
pub use daemon::DaemonStore; pub use daemon::DaemonStore;
pub use validation::validate_store_path;
pub trait Store: Send + Sync { pub trait Store: Send + Sync {
fn get_store_dir(&self) -> &str; fn get_store_dir(&self) -> &str;
+9
View File
@@ -267,6 +267,15 @@ fn escape_quote_string(s: &str) -> String {
ret ret
} }
/// Wrapper to format a float in Nix style (C printf `%g` with precision 6).
pub(crate) struct NixFloat(pub f64);
impl Display for NixFloat {
fn fmt(&self, f: &mut Formatter<'_>) -> FmtResult {
fmt_nix_float(f, self.0)
}
}
/// Format a float matching C's `printf("%g", x)` with default precision 6. /// Format a float matching C's `printf("%g", x)` with default precision 6.
fn fmt_nix_float(f: &mut Formatter<'_>, x: f64) -> FmtResult { fn fmt_nix_float(f: &mut Formatter<'_>, x: f64) -> FmtResult {
if !x.is_finite() { if !x.is_finite() {