From 6826cf0be1816a8320835ab315d46063dc746aac Mon Sep 17 00:00:00 2001 From: romir kulshrestha Date: Wed, 4 Mar 2026 21:01:09 +0100 Subject: buildscript --- .gitignore | 2 +- Cargo.lock | 40 +- Cargo.toml | 2 +- fetch | 19 + oryxc/.gitignore | 1 - oryxc/Cargo.toml | 13 +- oryxc/build.rs | 192 ++++++ oryxc/src/unicode/line_terminator.rs | 136 +--- oryxc/src/unicode/pattern_white_space.rs | 138 +--- oryxc/src/unicode/xid_continue.rs | 1008 +----------------------------- oryxc/src/unicode/xid_start.rs | 928 +-------------------------- unigen/Cargo.toml | 7 - unigen/fetch | 19 - unigen/src/main.rs | 279 --------- 14 files changed, 225 insertions(+), 2559 deletions(-) create mode 100755 fetch delete mode 100644 oryxc/.gitignore create mode 100644 oryxc/build.rs delete mode 100644 unigen/Cargo.toml delete mode 100755 unigen/fetch delete mode 100644 unigen/src/main.rs diff --git a/.gitignore b/.gitignore index 72e2ff5..b42a62c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ target/ -unigen/data/ +data/ .idea/ diff --git a/Cargo.lock b/Cargo.lock index b835f73..0a66b5c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -179,12 +179,6 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" -[[package]] -name = "lexopt" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "803ec87c9cfb29b9d2633f20cba1f488db3fd53f2158b1024cbefb47ba05d413" - [[package]] name = "libc" version = "0.2.182" @@ -213,7 +207,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] -name = "oryxc" +name = "oryx" version = "0.1.0" dependencies = [ "boxcar", @@ -222,7 +216,6 @@ dependencies = [ "dashmap", "phf", "soa-rs", - "unicode-normalization", "unicode-width", ] @@ -393,49 +386,18 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "tinyvec" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - [[package]] name = "unicode-ident" version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" -[[package]] -name = "unicode-normalization" -version = "0.1.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" -dependencies = [ - "tinyvec", -] - [[package]] name = "unicode-width" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" -[[package]] -name = "unigen" -version = "0.1.0" -dependencies = [ - "lexopt", -] - [[package]] name = "utf8parse" version = "0.2.2" diff --git a/Cargo.toml b/Cargo.toml index cbe097e..4221c83 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,4 +1,4 @@ [workspace] resolver = "3" default-members = ["oryxc"] -members = ["oryxc", "unigen"] +members = ["oryxc"] diff --git a/fetch b/fetch new file mode 100755 index 0000000..46c02f9 --- /dev/null +++ b/fetch @@ -0,0 +1,19 @@ +#!/bin/sh + +set -e + +cd "${0%/*}" +trap 'rm -f UCD.zip' EXIT + +set -x +mkdir -p data +curl -LO https://www.unicode.org/Public/zipped/latest/UCD.zip +unzip -od data UCD.zip + +# XID_Start and XID_Continue additions +cat <<-EOF >>data/DerivedCoreProperties.txt +0024 ; XID_Start # Pc DOLLAR SIGN +005F ; XID_Start # Pc LOW LINE +2032..2034 ; XID_Continue # Po [3] PRIME..TRIPLE PRIME +2057 ; XID_Continue # Po QUADRUPLE PRIME +EOF diff --git a/oryxc/.gitignore b/oryxc/.gitignore deleted file mode 100644 index ea8c4bf..0000000 --- a/oryxc/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/target diff --git a/oryxc/Cargo.toml b/oryxc/Cargo.toml index a7ab1e4..aeeea7d 100644 --- a/oryxc/Cargo.toml +++ b/oryxc/Cargo.toml @@ -1,15 +1,16 @@ [package] -name = "oryxc" +name = "oryx" version = "0.1.0" edition = "2024" [dependencies] boxcar = "0.2.14" -clap = { version = "4", features = ["derive"] } +clap = { version = "4", features = ["derive"] } crossbeam-deque = "0.8.6" dashmap = "6.1.0" +phf = { version = "0.13.1", features = ["macros"] } +soa-rs = "0.9.1" +unicode-width = "0.2.2" + # num-rational = "0.4.2" -phf = { version = "0.13.1", features = ["macros"] } -soa-rs = "0.9.1" -unicode-normalization = "0.1.25" -unicode-width = "0.2.2" +# icu = { version = "2.1.1", features = ["compiled_data"] } diff --git a/oryxc/build.rs b/oryxc/build.rs new file mode 100644 index 0000000..59233c5 --- /dev/null +++ b/oryxc/build.rs @@ -0,0 +1,192 @@ +use std::collections::HashMap; +use std::env; +use std::fs::File; +use std::io::{ + self, + BufRead, + BufReader, + Write, +}; + +const MIN_SHIFT: usize = 1; +const MAX_SHIFT: usize = 22; + +fn main() { + let out_dir = env::var("OUT_DIR").unwrap(); + let root = env::var("CARGO_MANIFEST_DIR").unwrap(); + let data = format!("{root}/../data"); + + println!("cargo:rerun-if-changed={data}/DerivedCoreProperties.txt"); + println!("cargo:rerun-if-changed={data}/PropList.txt"); + + generate_from_file( + &out_dir, + &format!("{data}/DerivedCoreProperties.txt"), + "XID_Start", + "xid_start", + ); + generate_from_file( + &out_dir, + &format!("{data}/DerivedCoreProperties.txt"), + "XID_Continue", + "xid_continue", + ); + generate_from_file( + &out_dir, + &format!("{data}/PropList.txt"), + "Pattern_White_Space", + "pattern_white_space", + ); + generate_from_codepoints( + &out_dir, + &[ + '\u{A}', '\u{B}', '\u{C}', '\u{D}', '\u{85}', '\u{2028}', + '\u{2029}', + ], + "line_terminator", + ); +} + +fn generate_from_file(out_dir: &str, path: &str, prop: &str, name: &str) { + let mut bitmap = vec![false; 0x110000]; + parse_file(path, prop, &mut bitmap) + .unwrap_or_else(|e| panic!("failed to read {path}: {e}")); + write_output(out_dir, name, &bitmap); +} + +fn generate_from_codepoints(out_dir: &str, codepoints: &[char], name: &str) { + let mut bitmap = vec![false; 0x110000]; + for &c in codepoints { + bitmap[c as usize] = true; + } + write_output(out_dir, name, &bitmap); +} + +fn write_output(out_dir: &str, name: &str, bitmap: &[bool]) { + let (shift, lvl1, lvl2) = optimize_tables(bitmap); + let mut f = File::create(format!("{out_dir}/{name}.rs")).unwrap(); + generate_code(&mut f, name, shift, &lvl1, &lvl2); +} + +fn optimize_tables(bitmap: &[bool]) -> (usize, Vec, Vec) { + let mut minsz = usize::MAX; + let mut config = (0, Vec::new(), Vec::new()); + + for i in MIN_SHIFT..=MAX_SHIFT { + let (l1, l2) = build_tables(bitmap, i); + let sz = l1.len() * 2 + l2.len() * 8; + if sz < minsz { + minsz = sz; + config = (i, l1, l2); + } + } + + config +} + +fn parse_file(path: &str, prop: &str, bitmap: &mut [bool]) -> io::Result<()> { + let file = File::open(path)?; + let reader = BufReader::new(file); + + for line in reader.lines() { + let line = line?; + let line = line.split('#').next().unwrap_or("").trim(); + if line.is_empty() { + continue; + } + + let parts: Vec<&str> = line.split(';').map(|s| s.trim()).collect(); + if parts.len() < 2 || parts[1] != prop { + continue; + } + + let (beg, end) = if parts[0].contains("..") { + let mut range = parts[0].split(".."); + ( + u32::from_str_radix(range.next().unwrap(), 16).unwrap(), + u32::from_str_radix(range.next().unwrap(), 16).unwrap(), + ) + } else { + let val = u32::from_str_radix(parts[0], 16).unwrap(); + (val, val) + }; + + for cp in beg..=end { + if (cp as usize) < bitmap.len() { + bitmap[cp as usize] = true; + } + } + } + + Ok(()) +} + +fn build_tables(bitmap: &[bool], shift: usize) -> (Vec, Vec) { + let blksz = 1 << shift; + let u64s_per_block = (blksz + 63) / 64; + + let mut lvl2: Vec = Vec::new(); + let mut lvl1: Vec = Vec::new(); + let mut blkmap: HashMap, u16> = HashMap::new(); + + for chunk in bitmap.chunks(blksz) { + let mut blkdata = vec![0u64; u64s_per_block]; + + for (i, &bit) in chunk.iter().enumerate() { + if bit { + let word_idx = i / 64; + let bit_idx = i % 64; + blkdata[word_idx] |= 1 << bit_idx; + } + } + + if let Some(&i) = blkmap.get(&blkdata) { + lvl1.push(i); + } else { + let i = (lvl2.len() / u64s_per_block) as u16; + lvl2.extend_from_slice(&blkdata); + blkmap.insert(blkdata, i); + lvl1.push(i); + } + } + + (lvl1, lvl2) +} + +fn generate_code( + f: &mut impl Write, + prop_name: &str, + shift: usize, + level1: &[u16], + level2: &[u64], +) { + let upper_name = prop_name.to_uppercase(); + let lower_name = prop_name.to_lowercase(); + let block_size = 1 << shift; + let mask = block_size - 1; + let u64s_per_block = (block_size + 63) / 64; + + let pred_name = if lower_name.contains('_') { + format!("{lower_name}_p") + } else { + format!("{lower_name}p") + }; + + writeln!(f, "/* Autogenerated – DO NOT EDIT */").unwrap(); + writeln!(f).unwrap(); + writeln!(f, "static {upper_name}_L1: [u16; {}] = {level1:?};", level1.len()).unwrap(); + writeln!(f, "static {upper_name}_L2: [u64; {}] = {level2:?};", level2.len()).unwrap(); + writeln!(f, "#[inline]").unwrap(); + writeln!(f, "pub fn {pred_name}(c: char) -> bool {{").unwrap(); + writeln!(f, "\tlet cp = c as usize;").unwrap(); + writeln!(f, "\tlet blki = unsafe {{ *{upper_name}_L1.get_unchecked(cp >> {shift}) }} as usize;").unwrap(); + writeln!(f, "\tlet in_blk_offset_p = cp & 0x{mask:X};").unwrap(); + if u64s_per_block == 1 { + writeln!(f, "\tunsafe {{ return ({upper_name}_L2.get_unchecked(blki) & (1 << in_blk_offset_p)) != 0; }}").unwrap(); + } else { + writeln!(f, "\tlet wordi = (blki * {u64s_per_block}) + (in_blk_offset_p >> 6);").unwrap(); + writeln!(f, "\tlet biti = in_blk_offset_p & 0x3F;").unwrap(); + writeln!(f, "\tunsafe {{ return (*{upper_name}_L2.get_unchecked(wordi) & (1 << biti)) != 0; }}").unwrap(); + } + writeln!(f, "}}").unwrap(); +} diff --git a/oryxc/src/unicode/line_terminator.rs b/oryxc/src/unicode/line_terminator.rs index 5c6b052..300bb54 100644 --- a/oryxc/src/unicode/line_terminator.rs +++ b/oryxc/src/unicode/line_terminator.rs @@ -1,135 +1 @@ -/* Autogenerated – DO NOT EDIT */ - -static LINE_TERMINATOR_L1: [u16; 544] = [ - 0, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -]; -static LINE_TERMINATOR_L2: [u64; 96] = [ - 7168, - 0, - 32, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 3298534883328, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, -]; -#[inline] -pub fn line_terminator_p(c: char) -> bool { - let cp = c as usize; - let blki = unsafe { *LINE_TERMINATOR_L1.get_unchecked(cp >> 11) } as usize; - let in_blk_offset_p = cp & 0x7FF; - let wordi = (blki * 32) + (in_blk_offset_p >> 6); - let biti = in_blk_offset_p & 0x3F; - unsafe { - return (*LINE_TERMINATOR_L2.get_unchecked(wordi) & (1 << biti)) != 0; - } -} +include!(concat!(env!("OUT_DIR"), "/line_terminator.rs")); diff --git a/oryxc/src/unicode/pattern_white_space.rs b/oryxc/src/unicode/pattern_white_space.rs index b051e3a..f90db8d 100644 --- a/oryxc/src/unicode/pattern_white_space.rs +++ b/oryxc/src/unicode/pattern_white_space.rs @@ -1,137 +1 @@ -/* Autogenerated – DO NOT EDIT */ - -static PATTERN_WHITE_SPACE_L1: [u16; 544] = [ - 0, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -]; -static PATTERN_WHITE_SPACE_L2: [u64; 96] = [ - 4294983168, - 0, - 32, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 3298534932480, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, -]; -#[inline] -pub fn pattern_white_space_p(c: char) -> bool { - let cp = c as usize; - let blki = - unsafe { *PATTERN_WHITE_SPACE_L1.get_unchecked(cp >> 11) } as usize; - let in_blk_offset_p = cp & 0x7FF; - let wordi = (blki * 32) + (in_blk_offset_p >> 6); - let biti = in_blk_offset_p & 0x3F; - unsafe { - return (*PATTERN_WHITE_SPACE_L2.get_unchecked(wordi) & (1 << biti)) - != 0; - } -} +include!(concat!(env!("OUT_DIR"), "/pattern_white_space.rs")); diff --git a/oryxc/src/unicode/xid_continue.rs b/oryxc/src/unicode/xid_continue.rs index 8fbbce4..571ae40 100644 --- a/oryxc/src/unicode/xid_continue.rs +++ b/oryxc/src/unicode/xid_continue.rs @@ -1,1007 +1 @@ -/* Autogenerated – DO NOT EDIT */ - -static XID_CONTINUE_L1: [u16; 1088] = [ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 10, 11, 12, 12, 12, 12, 12, 12, 13, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 14, 15, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 16, 9, 9, 9, 9, 9, 9, - 9, 9, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 9, 29, 12, 30, 12, - 12, 31, 32, 9, 9, 9, 9, 9, 9, 33, 9, 34, 35, 12, 12, 12, 12, 12, 12, 12, - 36, 9, 9, 9, 9, 9, 9, 9, 37, 38, 9, 9, 39, 9, 9, 9, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 9, 9, 49, 9, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 50, 12, 12, 12, 12, 51, 12, 12, 12, - 12, 52, 12, 12, 12, 12, 12, 12, 53, 54, 9, 9, 55, 9, 12, 12, 12, 12, 56, - 12, 12, 12, 12, 12, 12, 12, 12, 57, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 58, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, -]; -static XID_CONTINUE_L2: [u64; 944] = [ - 287948901175001088, - 576460745995190270, - 333270770471927808, - 18410715276682199039, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 88094074470339, - 18446744073709551615, - 13321647697761927167, - 18446744056529672128, - 18428729675200069631, - 18446744073709551615, - 18446744073709551615, - 18446744073709550843, - 18446744073709551615, - 18446462598732840959, - 18446744069456527359, - 13835058055282033151, - 2119858418286774, - 18446744069548736512, - 18446678103011885055, - 18446744073709551615, - 11529212845433552895, - 18446744073709486080, - 18446744073709545471, - 1125899906842623, - 2612087783874887679, - 70368744177663, - 18446471390799331327, - 18446744073701228287, - 18446744056529682431, - 18446744073709551615, - 18446462392574410751, - 17565725197581524975, - 5765733215448889759, - 15235112390417287150, - 18014125208779143, - 17576984196650090478, - 18302910150157089727, - 17576984196649951214, - 844217444219295, - 14123225865944680428, - 281200107273671, - 17582050746231021567, - 281265452367327, - 17577547146603651055, - 4221916082617823, - 18446744073709412351, - 18158794964244397535, - 3457638613854978030, - 3658904103781503, - 576460752303423486, - 67076095, - 4611685674830002134, - 4093607775, - 14024213633433600001, - 18446216308128218879, - 2305843009196916703, - 64, - 18446744073709551615, - 18446744073709487103, - 18446744070488326143, - 17870283321406070975, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744070446333439, - 9168765891372858879, - 18446744073701162813, - 18446744073696837631, - 1123704775901183, - 18446744069414649855, - 4557642822898941951, - 18446744073709551614, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446638520593285119, - 18446744069548802046, - 144053615424700415, - 9007197111451647, - 3905461007941631, - 18446744073709551615, - 4394566287359, - 18446744069481674752, - 144115188075855871, - 18446471394825863167, - 18014398509481983, - 1152657619668697087, - 8796093022207936, - 18446480190918885375, - 134153215, - 18446744069683019775, - 11529215043920986111, - 13834777130128311295, - 17588964818943, - 18446744073709551615, - 4494803601399807, - 18446744073709551615, - 4503599627370495, - 72057594037927935, - 4611686018427380735, - 16717361816799217663, - 576460752302833664, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744070475743231, - 4611686017001275199, - 6908521828386340863, - 2295745090394464220, - 9231253336202686464, - 9223934986817634305, - 536805376, - 562821641207808, - 17582049991377026180, - 18446744069414601696, - 511, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 4494940973301759, - 18446498607738650623, - 9223513873854758911, - 9187201948305063935, - 18446744071553646463, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 2251518330118602976, - 18446744073709551614, - 18446744068986765311, - 18446744073709551615, - 18446462598732840928, - 18446744073709551615, - 18446744069414617087, - 18446462598732840960, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 0, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 8191, - 4611686018427322368, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 17592185987071, - 13830835930631503871, - 18446744073709551615, - 1125899906842623, - 18446744060816261120, - 18446744073709551615, - 18446744073709550079, - 18446181124293001215, - 18691697672191, - 4503599627370495, - 18446744073709551615, - 16789419406609285183, - 18446532967477018623, - 2305843004919775231, - 18446744073709551615, - 9223372032626884609, - 36028797018963967, - 18194542490348896255, - 18446744073709551615, - 35184368733388807, - 18446602782178705022, - 18446466996645134335, - 18446744073709551615, - 288010473826156543, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446462667452317695, - 1152921504606845055, - 0, - 0, - 0, - 0, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446532967477018623, - 18446744073709551615, - 67108863, - 6881498031078244479, - 18446744073709551579, - 1125899906842623, - 18446744073709027328, - 18446744073709551615, - 18446744006063816703, - 18446744073709551615, - 18446744073709551615, - 4611686018427387903, - 18446744073709486080, - 18446744073709355007, - 287948901175001343, - 7036870122864639, - 12288634533233876992, - 18446744073709551615, - 2305843009213693951, - 9799832780635308032, - 18446743936404815870, - 9223372036854775807, - 486341884, - 13258596753222922239, - 1073692671, - 18446744073709551615, - 576460752303423487, - 0, - 9007199254740991, - 0, - 2305843009213693952, - 0, - 0, - 18446744069951455231, - 4295098367, - 18446708893632430079, - 576460752303359999, - 18446744070488326143, - 4128527, - 18446744073709551615, - 18446744073709551615, - 18446466993558126591, - 1152921504591118335, - 18446463698244468735, - 17870001915148894207, - 2016486715970549759, - 4503599627370495, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 36028797018963967, - 1095220854783, - 575897802350002111, - 0, - 10502394331027995967, - 36028792728190975, - 2147483647, - 15762594400829440, - 288230371860938751, - 67108863, - 13907115649320091647, - 0, - 9745789593611923567, - 2305843004918726656, - 536870911, - 549755813631, - 18014398509481983, - 2251795522912255, - 262143, - 0, - 18446744073709551615, - 511, - 2251799813685247, - 2251799813685247, - 287950000686628863, - 18446671780820025343, - 63, - 0, - 0, - 0, - 875211255709695, - 18158513697557840124, - 18446463149025525759, - 18446462598732972031, - 18446462598732841023, - 36028792723996703, - 18446744073709551615, - 9241386160486350975, - 576460752303423487, - 287951100198191108, - 18437736874454810623, - 22517998136787184, - 18446744073709551615, - 402644511, - 13907115649319829503, - 3, - 18446464796682337663, - 287957697268023295, - 18153444948953374703, - 8760701963286943, - 18428729675200023551, - 25770850213, - 18446744073709551615, - 16173172735, - 18446744073709551615, - 67043519, - 0, - 0, - 18392700878181105663, - 1056964609, - 18446744073709551615, - 67043345, - 144115188075855871, - 68719412223, - 287966492958392319, - 127, - 0, - 0, - 576460752303423487, - 0, - 18446744069414584320, - 9223376434901286911, - 17996384110963061375, - 67043343, - 18446740770879700992, - 120208752639, - 9223372036854775807, - 18446744073709486208, - 18446462599336820735, - 144115188075855871, - 0, - 1095216660480, - 0, - 287948909764935679, - 18410715276690587135, - 18445618173869752321, - 36027697507139583, - 0, - 13006395723845991295, - 18446741595580465407, - 18446466992517644287, - 4394019979263, - 0, - 0, - 0, - 36028792723996672, - 14411518807585456127, - 134152199, - 281474976710656, - 0, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 67108863, - 0, - 18446744073709551615, - 140737488355327, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 15, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 18446744073709486080, - 562949953421311, - 281474976710655, - 18446744069418778623, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 576460752303423487, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 127, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 288230376151711743, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 144115188075855871, - 18446466994631868415, - 9223372036854775807, - 8796093022143487, - 36028797018963967, - 16212958624241090575, - 65535, - 0, - 0, - 0, - 0, - 0, - 0, - 287984085547089919, - 0, - 0, - 0, - 18446744073709551615, - 18014398505187016704, - 1048575, - 18446744073709551615, - 18446744073709520895, - 4294934783, - 35747438006370304, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 9223372036858970111, - 2147483647, - 0, - 18446744073709551615, - 2251799813685247, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 8065665457643847680, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 1125934266580991, - 18446463629527547904, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 1152921504606846975, - 0, - 0, - 0, - 0, - 18446744073709551615, - 2305570330330005503, - 1677656575, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 287948901175001088, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 18446532967477018623, - 127, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 17872504197455282176, - 65970697670631, - 0, - 0, - 28, - 0, - 0, - 0, - 0, - 0, - 0, - 18446744073709551615, - 18446744073707454463, - 17005555242810474495, - 18446744073709551599, - 8935141660164089791, - 18446744073709419615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446743249075830783, - 17870283321271910397, - 18437736874452713471, - 18446603336221163519, - 18446741874686295551, - 18446744073709539319, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 17906312118425092095, - 9042383626829823, - 281470547525648, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 8660801552383, - 0, - 0, - 0, - 18446471240106377087, - 70368744177663, - 32768, - 0, - 4611439727822766079, - 17407, - 0, - 0, - 0, - 0, - 140737488289792, - 288230376151711743, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 288230376151646208, - 0, - 0, - 0, - 576460752303357952, - 0, - 0, - 0, - 13853072451644162047, - 0, - 0, - 0, - 9223213153129594880, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 8323103, - 18446744073709551615, - 67047423, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 790380184120328175, - 6843210385291930244, - 1152917029519358975, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 287948901175001088, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 4294967295, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744070488326143, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446532967477018623, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446462607322775551, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 1073741823, - 0, - 0, - 0, - 0, - 0, - 0, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 1073741823, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709488127, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 288230376151711743, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 281474976710655, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, -]; -#[inline] -pub fn xid_continue_p(c: char) -> bool { - let cp = c as usize; - let blki = unsafe { *XID_CONTINUE_L1.get_unchecked(cp >> 10) } as usize; - let in_blk_offset_p = cp & 0x3FF; - let wordi = (blki * 16) + (in_blk_offset_p >> 6); - let biti = in_blk_offset_p & 0x3F; - unsafe { - return (*XID_CONTINUE_L2.get_unchecked(wordi) & (1 << biti)) != 0; - } -} +include!(concat!(env!("OUT_DIR"), "/xid_continue.rs")); diff --git a/oryxc/src/unicode/xid_start.rs b/oryxc/src/unicode/xid_start.rs index 1c9d9ae..649faa5 100644 --- a/oryxc/src/unicode/xid_start.rs +++ b/oryxc/src/unicode/xid_start.rs @@ -1,927 +1 @@ -/* Autogenerated – DO NOT EDIT */ - -static XID_START_L1: [u16; 1088] = [ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 10, 11, 12, 12, 12, 12, 12, 12, 13, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 14, 15, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 16, 9, 9, 9, 9, 9, 9, - 9, 9, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 9, 29, 12, 30, 12, - 12, 31, 32, 9, 9, 9, 9, 9, 9, 33, 9, 34, 35, 12, 12, 12, 12, 12, 12, 12, - 36, 9, 9, 9, 9, 9, 9, 9, 37, 38, 9, 9, 39, 9, 9, 9, 9, 9, 40, 9, 41, 42, - 43, 44, 45, 9, 9, 9, 9, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 46, 12, 12, 12, 12, 47, 12, 12, 12, 12, - 48, 12, 12, 12, 12, 12, 12, 49, 50, 9, 9, 51, 9, 12, 12, 12, 12, 52, 12, - 12, 12, 12, 12, 12, 12, 12, 53, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, -]; -static XID_START_L2: [u64; 864] = [ - 68719476736, - 576460745995190270, - 297241973452963840, - 18410715276682199039, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 88094074470339, - 0, - 13321366222785216512, - 18446744056529672000, - 18428729675200069631, - 18446744073709551615, - 18446744073709551615, - 18446744073709550595, - 18446744073709551615, - 18446462598732840959, - 18446744069456527359, - 511, - 2119858418286592, - 18446744069414584320, - 18446392229988665343, - 18446744073709551615, - 11241196188469297151, - 281474976514048, - 18446744073709543424, - 563224831328255, - 301749971126844416, - 1168302407679, - 18446471390564450303, - 18446744069414649599, - 1023, - 2594073385365405680, - 18446181140919287808, - 2577745637692514273, - 1153765945374687232, - 247132830528276448, - 7881300924956672, - 2589004636761079776, - 144115200960823296, - 2589004636760940512, - 562965791113216, - 288167810662516712, - 65536, - 2594071186342010848, - 13807648768, - 2589567586714640353, - 1688864624214016, - 2882303761516978160, - 18158513712597581824, - 3457638613854978016, - 127, - 1688849860263934, - 127, - 2307531515476572118, - 4026531935, - 1, - 35184372088575, - 7936, - 0, - 9223380832947798015, - 18438229877581611008, - 18446744069414600707, - 17870283321406070975, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744070446333439, - 9168765891372858879, - 18446744073701162813, - 18446744073696837631, - 134217727, - 18446744069414649855, - 4557642822898941951, - 18446744073709551614, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446638520593285119, - 18446744069548802046, - 144053615424700415, - 1125897759621119, - 527761286627327, - 4503599627370495, - 276824064, - 18446744069414584320, - 144115188075855871, - 18446469195802607615, - 18014398509481983, - 2147483647, - 8796093022142464, - 18446480190918885375, - 1023, - 18446744069422972927, - 2097151, - 549755813888, - 0, - 4503599627370464, - 8160, - 18158724812380307448, - 274877906943, - 68719476735, - 4611686018360336384, - 16717361816799217663, - 319718190147960832, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 0, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744070475743231, - 4611686017001275199, - 6908521828386340863, - 2295745090394464220, - 0, - 9223934986808197120, - 536805376, - 0, - 17582049991377026180, - 18446744069414601696, - 511, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 3509778554814463, - 18446498607738650623, - 141836999983103, - 9187201948305063935, - 2139062143, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 2251241253188403424, - 18446744073709551614, - 18446744068886102015, - 17870283321406128127, - 18446462598732840928, - 18446744073709551615, - 18446744069414617087, - 18446462598732840960, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 0, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 8191, - 4611686018427322368, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 13198434443263, - 9223512774343131135, - 18446744070488326143, - 281474976710655, - 18446744060816261120, - 18446744073709551615, - 18446744073709550079, - 18446181124293001215, - 34359736251, - 4503599627370495, - 4503599627370492, - 7564921474075590656, - 18446462873610746880, - 2305843004918726783, - 2251799813685232, - 8935422993945886720, - 2199023255551, - 14159317224157876215, - 4495436853045886975, - 7890092085477381, - 18446602782178705022, - 18446466996645134335, - 18446744073709551615, - 34359738367, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446462667452317695, - 1152921504606845055, - 0, - 0, - 0, - 0, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446532967477018623, - 18446744073709551615, - 67108863, - 6881498030004502655, - 18446744073709551579, - 1125899906842623, - 18446744073709027328, - 18446744073709551615, - 18446744006063816703, - 18446744073709551615, - 18446744073709551615, - 4611686018427387903, - 18446744073709486080, - 18446744073709355007, - 287948901175001343, - 0, - 12288634533233819648, - 18446744073709551615, - 2305843009213693951, - 576460743713488896, - 18446743798965862398, - 9223372033633550335, - 486341884, - 13258596753222922239, - 1073692671, - 18446744073709551615, - 576460752303423487, - 0, - 9007199254740991, - 0, - 0, - 0, - 0, - 18446744069951455231, - 131071, - 18446708893632430079, - 18014398509418495, - 18446744070488326143, - 4128527, - 18446744073709551615, - 18446744073709551615, - 18446462599806582783, - 1152921504591118335, - 18446463698244468735, - 17870001915148894207, - 2016486715970549759, - 4503599627370495, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 36028797018963967, - 1095220854783, - 575897802350002111, - 0, - 10502394331027995967, - 36028792728190975, - 2147483647, - 15762594400829440, - 288230371860938751, - 67108863, - 13907115649320091647, - 0, - 18014398491590657, - 2305843004918726656, - 536870911, - 137438953215, - 18014398509481983, - 2251795522912255, - 262143, - 0, - 18446744073709551615, - 511, - 2251799813685247, - 2251799813685247, - 68719476735, - 18446603611099102208, - 63, - 0, - 0, - 0, - 848822976643071, - 252, - 18446463149025525759, - 18446462598732841023, - 18446462598732840963, - 36028792723996703, - 72057594037927928, - 10696049115004928, - 281474976710648, - 2199023190016, - 549755813880, - 20266198323101840, - 2251799813685240, - 335544350, - 9223389629040558079, - 1, - 18446464796682337663, - 2147483647, - 2589004636760940512, - 16643063808, - 54043195528399871, - 655360, - 9007199254740991, - 15032387456, - 281474976710655, - 176, - 0, - 0, - 140737488355327, - 251658240, - 281474976710655, - 16, - 72066390130950143, - 0, - 134217727, - 127, - 0, - 0, - 17592186044415, - 0, - 18446744069414584320, - 9223372041149743103, - 9223653511822045823, - 2, - 18446740770879700992, - 42949804031, - 290482175965394945, - 18446744073441181696, - 18446462599269712895, - 144115188075855871, - 0, - 0, - 0, - 8589934591, - 140737488354815, - 18445618173802708993, - 65535, - 0, - 562949953420159, - 18446741595513421888, - 18446462598749619199, - 268435455, - 0, - 0, - 0, - 2251795518717952, - 4503599627239412, - 0, - 281474976710656, - 0, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 67108863, - 0, - 18446744073709551615, - 140737488355327, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 15, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 18446744073709486080, - 562949953421311, - 281474976710655, - 18446744069414584446, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 576460752303423487, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 127, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1073741823, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 144115188075855871, - 18446462600880324607, - 9223372036854775807, - 70368744112128, - 281474976710655, - 16212958624174047247, - 65535, - 0, - 0, - 0, - 0, - 0, - 0, - 35184372088831, - 0, - 0, - 0, - 18446744073709551615, - 18014398505187016704, - 1048575, - 18446744073709551615, - 67583, - 4294443008, - 34902944356761600, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 9223372036858970111, - 2147483647, - 0, - 18446744073709551615, - 2251799813685247, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 8065665457643847680, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 1125934266580991, - 18446463629527547904, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 1152921504606846975, - 0, - 0, - 0, - 0, - 18446744073709551615, - 2305570330330005503, - 67043839, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 18446744073709551615, - 18446744073707454463, - 17005555242810474495, - 18446744073709551599, - 8935141660164089791, - 18446744073709419615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446743249075830783, - 17870283321271910397, - 18437736874452713471, - 18446603336221163519, - 18446741874686295551, - 4087, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 8660801552383, - 0, - 0, - 0, - 18446462598732840960, - 70368744177663, - 0, - 0, - 4575692405780512767, - 16384, - 0, - 0, - 0, - 0, - 70368744112128, - 17592186044415, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 17592185978880, - 0, - 0, - 0, - 351843720822784, - 0, - 0, - 0, - 13843853836919242751, - 0, - 0, - 0, - 9223213153129594880, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 31, - 18446744073709551615, - 2063, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 790380184120328175, - 6843210385291930244, - 1152917029519358975, - 0, - 0, - 0, - 0, - 0, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 4294967295, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744070488326143, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446532967477018623, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446462607322775551, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 1073741823, - 0, - 0, - 0, - 0, - 0, - 0, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 1073741823, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 18446744073709488127, - 18446744073709551615, - 18446744073709551615, - 18446744073709551615, - 288230376151711743, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, -]; -#[inline] -pub fn xid_start_p(c: char) -> bool { - let cp = c as usize; - let blki = unsafe { *XID_START_L1.get_unchecked(cp >> 10) } as usize; - let in_blk_offset_p = cp & 0x3FF; - let wordi = (blki * 16) + (in_blk_offset_p >> 6); - let biti = in_blk_offset_p & 0x3F; - unsafe { - return (*XID_START_L2.get_unchecked(wordi) & (1 << biti)) != 0; - } -} +include!(concat!(env!("OUT_DIR"), "/xid_start.rs")); diff --git a/unigen/Cargo.toml b/unigen/Cargo.toml deleted file mode 100644 index 587afb7..0000000 --- a/unigen/Cargo.toml +++ /dev/null @@ -1,7 +0,0 @@ -[package] -name = "unigen" -version = "0.1.0" -edition = "2024" - -[dependencies] -lexopt = "0.3.2" diff --git a/unigen/fetch b/unigen/fetch deleted file mode 100755 index 46c02f9..0000000 --- a/unigen/fetch +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh - -set -e - -cd "${0%/*}" -trap 'rm -f UCD.zip' EXIT - -set -x -mkdir -p data -curl -LO https://www.unicode.org/Public/zipped/latest/UCD.zip -unzip -od data UCD.zip - -# XID_Start and XID_Continue additions -cat <<-EOF >>data/DerivedCoreProperties.txt -0024 ; XID_Start # Pc DOLLAR SIGN -005F ; XID_Start # Pc LOW LINE -2032..2034 ; XID_Continue # Po [3] PRIME..TRIPLE PRIME -2057 ; XID_Continue # Po QUADRUPLE PRIME -EOF diff --git a/unigen/src/main.rs b/unigen/src/main.rs deleted file mode 100644 index bedabc6..0000000 --- a/unigen/src/main.rs +++ /dev/null @@ -1,279 +0,0 @@ -use std::collections::HashMap; -use std::ffi::{ - OsStr, - OsString, -}; -use std::fs::File; -use std::io::{ - self, - BufRead, - BufReader, -}; -use std::path::Path; -use std::sync::OnceLock; -use std::vec::Vec; -use std::{ - env, - process, -}; - -const MIN_SHIFT: usize = 1; -const MAX_SHIFT: usize = 22; - -#[derive(Default)] -struct Flags { - codepoints: Option>, - help: bool, -} - -impl Flags { - fn parse() -> Result<(Flags, Vec), lexopt::Error> { - use lexopt::prelude::*; - - let mut rest = Vec::with_capacity(env::args().len() - 1); - let mut flags = Flags::default(); - let mut parser = lexopt::Parser::from_env(); - parser.set_short_equals(false); - - while let Some(arg) = parser.next()? { - match arg { - Short('c') | Long("codepoints") => { - fn hex_to_char(s: &str) -> char { - return u32::from_str_radix(s, 16).map_or_else( - |e| { - eprintln!("{}: {s}: {e}", progname().display()); - process::exit(1); - }, - |n| { - char::from_u32(n).unwrap_or_else(|| { - eprintln!( - "{}: {s}: invalid codepoint", - progname().display() - ); - process::exit(1); - }) - }, - ); - } - - flags.codepoints = Some( - parser - .value()? - .to_str() - .unwrap_or_else(|| { - eprintln!( - "{}: unable to parse argument to -c/--codepoints", - progname().display() - ); - process::exit(1); - }) - .split(',') - .map(hex_to_char) - .collect(), - ); - }, - Short('h') | Long("help") => flags.help = true, - Value(v) => rest.push(v.into_string()?), - _ => return Err(arg.unexpected()), - } - } - - return Ok((flags, rest)); - } -} - -fn progname() -> &'static OsString { - static ARGV0: OnceLock = OnceLock::new(); - return ARGV0.get_or_init(|| { - let default = OsStr::new("oryxc"); - let s = env::args_os().next().unwrap_or(default.into()); - return Path::new(&s).file_name().unwrap_or(default).to_os_string(); - }); -} - -fn usage() { - eprintln!( - concat!( - "Usage: {0} data-file property-name\n", - " {0} -c codepoints name\n", - " {0} -h", - ), - progname().display() - ); -} - -fn main() -> io::Result<()> { - let (flags, rest) = match Flags::parse() { - Ok(v) => v, - Err(e) => { - eprintln!("{}: {e}", progname().display()); - usage(); - process::exit(1); - }, - }; - - if flags.help { - usage(); - process::exit(0); - } - - if (flags.codepoints.is_none() && rest.len() != 2) - || (flags.codepoints.is_some() && rest.len() != 1) - { - usage(); - process::exit(1); - } - - let mut bitmap = vec![false; 0x110000]; - let name = match flags.codepoints { - Some(vec) => { - vec.iter().for_each(|c| bitmap[*c as usize] = true); - &rest[0] - }, - None => { - parse_file(&rest[0], &rest[1], &mut bitmap)?; - &rest[1] - }, - }; - let (shift, lvl1, lvl2) = optimize_tables(&bitmap); - write_tables(name, shift, &lvl1, &lvl2); - return Ok(()); -} - -fn optimize_tables(bitmap: &[bool]) -> (usize, Vec, Vec) { - let mut minsz = usize::MAX; - let mut config = (0, Vec::new(), Vec::new()); - - for i in MIN_SHIFT..=MAX_SHIFT { - let (l1, l2) = build_tables(bitmap, i); - let sz = l1.len() * 2 + l2.len() * 8; - if sz < minsz { - minsz = sz; - config = (i, l1, l2); - } - } - - return config; -} - -fn parse_file>( - path: P, - prop: &str, - bitmap: &mut [bool], -) -> io::Result<()> { - let file = File::open(path)?; - let reader = BufReader::new(file); - - for line in reader.lines() { - let line = line?; - let line = line.split('#').next().unwrap_or("").trim(); - if line.is_empty() { - continue; - } - - let parts: Vec<&str> = line.split(';').map(|s| s.trim()).collect(); - if parts.len() < 2 || parts[1] != prop { - continue; - } - - let (beg, end) = if parts[0].contains("..") { - let mut range = parts[0].split(".."); - ( - u32::from_str_radix(range.next().unwrap(), 16).unwrap(), - u32::from_str_radix(range.next().unwrap(), 16).unwrap(), - ) - } else { - let val = u32::from_str_radix(parts[0], 16).unwrap(); - (val, val) - }; - - for cp in beg..=end { - if (cp as usize) < bitmap.len() { - bitmap[cp as usize] = true; - } - } - } - return Ok(()); -} - -fn build_tables(bitmap: &[bool], shift: usize) -> (Vec, Vec) { - let blksz = 1 << shift; - let u64s_per_block = (blksz + 63) / 64; - - let mut lvl2: Vec = Vec::new(); - let mut lvl1: Vec = Vec::new(); - let mut blkmap: HashMap, u16> = HashMap::new(); - - for chunk in bitmap.chunks(blksz) { - let mut blkdata = vec![0u64; u64s_per_block]; - - for (i, &bit) in chunk.iter().enumerate() { - if bit { - let word_idx = i / 64; - let bit_idx = i % 64; - blkdata[word_idx] |= 1 << bit_idx; - } - } - - if let Some(&i) = blkmap.get(&blkdata) { - lvl1.push(i); - } else { - let i = (lvl2.len() / u64s_per_block) as u16; - lvl2.extend_from_slice(&blkdata); - blkmap.insert(blkdata, i); - lvl1.push(i); - } - } - - return (lvl1, lvl2); -} - -fn write_tables(prop_name: &str, shift: usize, level1: &[u16], level2: &[u64]) { - let upper_name = prop_name.to_uppercase(); - let lower_name = prop_name.to_lowercase(); - let block_size = 1 << shift; - let mask = block_size - 1; - let u64s_per_block = (block_size + 63) / 64; - - println!("/* Autogenerated – DO NOT EDIT */\n"); - print!( - "static {upper_name}_L1: [u16; {}] = {level1:?};", - level1.len() - ); - print!( - "static {upper_name}_L2: [u64; {}] = {level2:?};", - level2.len() - ); - - let pred_name = if lower_name.contains('_') { - format!("{lower_name}_p") - } else { - format!("{lower_name}p") - }; - - print!( - "#[inline] - pub fn {pred_name}(c: char) -> bool {{ - let cp = c as usize; - let blki = unsafe {{ *{upper_name}_L1.get_unchecked(cp >> {shift}) }} as usize; - let in_blk_offset_p = cp & 0x{mask:X};" - ); - - if u64s_per_block == 1 { - print!( - " unsafe {{ - return ({upper_name}_L2.get_unchecked(blki) & (1 << in_blk_offset_p)) != 0; - }}" - ); - } else { - print!( - "let wordi = (blki * {u64s_per_block}) + (in_blk_offset_p >> 6); - let biti = in_blk_offset_p & 0x3F; - unsafe {{ - return (*{upper_name}_L2.get_unchecked(wordi) & (1 << biti)) != 0; - }}" - ); - } - - print!("}}"); -} -- cgit v1.2.3 From 8b7956b965147407274f062799200db54eb50d3b Mon Sep 17 00:00:00 2001 From: romir kulshrestha Date: Thu, 5 Mar 2026 14:47:01 +0100 Subject: run script --- oryxc/build.rs | 20 +++++++++++++++++--- run.zsh | 21 +++++++++++++++++++++ 2 files changed, 38 insertions(+), 3 deletions(-) create mode 100755 run.zsh diff --git a/oryxc/build.rs b/oryxc/build.rs index 59233c5..7216935 100644 --- a/oryxc/build.rs +++ b/oryxc/build.rs @@ -174,8 +174,18 @@ fn generate_code( writeln!(f, "/* Autogenerated – DO NOT EDIT */").unwrap(); writeln!(f).unwrap(); - writeln!(f, "static {upper_name}_L1: [u16; {}] = {level1:?};", level1.len()).unwrap(); - writeln!(f, "static {upper_name}_L2: [u64; {}] = {level2:?};", level2.len()).unwrap(); + writeln!( + f, + "static {upper_name}_L1: [u16; {}] = {level1:?};", + level1.len() + ) + .unwrap(); + writeln!( + f, + "static {upper_name}_L2: [u64; {}] = {level2:?};", + level2.len() + ) + .unwrap(); writeln!(f, "#[inline]").unwrap(); writeln!(f, "pub fn {pred_name}(c: char) -> bool {{").unwrap(); writeln!(f, "\tlet cp = c as usize;").unwrap(); @@ -184,7 +194,11 @@ fn generate_code( if u64s_per_block == 1 { writeln!(f, "\tunsafe {{ return ({upper_name}_L2.get_unchecked(blki) & (1 << in_blk_offset_p)) != 0; }}").unwrap(); } else { - writeln!(f, "\tlet wordi = (blki * {u64s_per_block}) + (in_blk_offset_p >> 6);").unwrap(); + writeln!( + f, + "\tlet wordi = (blki * {u64s_per_block}) + (in_blk_offset_p >> 6);" + ) + .unwrap(); writeln!(f, "\tlet biti = in_blk_offset_p & 0x3F;").unwrap(); writeln!(f, "\tunsafe {{ return (*{upper_name}_L2.get_unchecked(wordi) & (1 << biti)) != 0; }}").unwrap(); } diff --git a/run.zsh b/run.zsh new file mode 100755 index 0000000..be3704c --- /dev/null +++ b/run.zsh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +set -uo pipefail + +BINARY=./target/debug/oryx +COUNT=${COUNT:-100} + +success=0 +fail=0 + +for ((i=1; i<=COUNT; i++)); do + printf '%3d: ' "$i" + if "$BINARY" "$@"; then + echo success + ((success++)) + else + echo fail + ((fail++)) + fi +done + +echo "Done: $success succeeded, $fail failed" \ No newline at end of file -- cgit v1.2.3 From 42c97d174e93fa6fb2767d5fc4bafc7d1a7c0174 Mon Sep 17 00:00:00 2001 From: romir kulshrestha Date: Thu, 5 Mar 2026 19:29:08 +0100 Subject: Replace fetch script --- fetch | 19 ------------------ oryxc/build.rs | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 58 insertions(+), 22 deletions(-) delete mode 100755 fetch diff --git a/fetch b/fetch deleted file mode 100755 index 46c02f9..0000000 --- a/fetch +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh - -set -e - -cd "${0%/*}" -trap 'rm -f UCD.zip' EXIT - -set -x -mkdir -p data -curl -LO https://www.unicode.org/Public/zipped/latest/UCD.zip -unzip -od data UCD.zip - -# XID_Start and XID_Continue additions -cat <<-EOF >>data/DerivedCoreProperties.txt -0024 ; XID_Start # Pc DOLLAR SIGN -005F ; XID_Start # Pc LOW LINE -2032..2034 ; XID_Continue # Po [3] PRIME..TRIPLE PRIME -2057 ; XID_Continue # Po QUADRUPLE PRIME -EOF diff --git a/oryxc/build.rs b/oryxc/build.rs index 7216935..06a35ee 100644 --- a/oryxc/build.rs +++ b/oryxc/build.rs @@ -1,24 +1,30 @@ use std::collections::HashMap; use std::env; -use std::fs::File; +use std::fs::{ + self, + File, +}; use std::io::{ self, BufRead, BufReader, Write, }; +use std::path::Path; +use std::process::Command; const MIN_SHIFT: usize = 1; const MAX_SHIFT: usize = 22; fn main() { let out_dir = env::var("OUT_DIR").unwrap(); - let root = env::var("CARGO_MANIFEST_DIR").unwrap(); - let data = format!("{root}/../data"); + let data = format!("{out_dir}/data"); println!("cargo:rerun-if-changed={data}/DerivedCoreProperties.txt"); println!("cargo:rerun-if-changed={data}/PropList.txt"); + fetch_data_if_missing(&out_dir, &data); + generate_from_file( &out_dir, &format!("{data}/DerivedCoreProperties.txt"), @@ -47,6 +53,55 @@ fn main() { ); } +/// Fetches unicode data files if missing. Replaces the fetch script. +fn fetch_data_if_missing(out_dir: &str, data: &str) { + let derived = format!("{data}/DerivedCoreProperties.txt"); + let proplist = format!("{data}/PropList.txt"); + if Path::new(&derived).exists() && Path::new(&proplist).exists() { + // Data exists + return; + } + + let zip = format!("{out_dir}/UCD.zip"); + + // curl -LO https://www.unicode.org/Public/zipped/latest/UCD.zip + let status = Command::new("curl") + .args([ + "-Lo", + &zip, + "https://www.unicode.org/Public/zipped/latest/UCD.zip", + ]) + .status() + .expect("failed to run curl"); + assert!(status.success(), "curl failed to download UCD.zip"); + + // mkdir -p data + fs::create_dir_all(data).unwrap(); + + // unzip -od data UCD.zip + let status = Command::new("unzip") + .args(["-od", data, &zip]) + .status() + .expect("failed to run unzip"); + assert!(status.success(), "unzip failed"); + + fs::remove_file(&zip).ok(); + + // XID_Start and XID_Continue additions + let mut f = fs::OpenOptions::new() + .append(true) + .open(&derived) + .expect("failed to open DerivedCoreProperties.txt"); + writeln!( + f, + "0024 ; XID_Start # Pc DOLLAR SIGN\n\ + 005F ; XID_Start # Pc LOW LINE\n\ + 2032..2034 ; XID_Continue # Po [3] PRIME..TRIPLE PRIME\n\ + 2057 ; XID_Continue # Po QUADRUPLE PRIME" + ) + .unwrap(); +} + fn generate_from_file(out_dir: &str, path: &str, prop: &str, name: &str) { let mut bitmap = vec![false; 0x110000]; parse_file(path, prop, &mut bitmap) -- cgit v1.2.3 From 8e110e40de9e4e5014512fa587904fabff73a303 Mon Sep 17 00:00:00 2001 From: romir kulshrestha Date: Thu, 5 Mar 2026 19:57:14 +0100 Subject: Fetch feature to control if/when generation occurs --- Cargo.lock | 1068 +++++++++++++++++++++++++++++++- oryxc/Cargo.toml | 7 + oryxc/build.rs | 470 +++++++------- oryxc/generated/line_terminator.rs | 13 + oryxc/generated/pattern_white_space.rs | 13 + oryxc/generated/xid_continue.rs | 13 + oryxc/generated/xid_start.rs | 13 + 7 files changed, 1369 insertions(+), 228 deletions(-) create mode 100644 oryxc/generated/line_terminator.rs create mode 100644 oryxc/generated/pattern_white_space.rs create mode 100644 oryxc/generated/xid_continue.rs create mode 100644 oryxc/generated/xid_start.rs diff --git a/Cargo.lock b/Cargo.lock index 0a66b5c..c4bd98c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,23 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + [[package]] name = "anstream" version = "0.6.21" @@ -38,7 +55,7 @@ version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys", + "windows-sys 0.61.2", ] [[package]] @@ -49,27 +66,104 @@ checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "arbitrary" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" +dependencies = [ + "derive_arbitrary", ] +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + [[package]] name = "bitflags" version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + [[package]] name = "boxcar" version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "36f64beae40a84da1b4b26ff2761a5b895c12adc41dc25aaee1c4f2bbfe97a6e" +[[package]] +name = "bumpalo" +version = "3.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bzip2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49ecfb22d906f800d4fe833b6282cf4dc1c298f5057ca0b5445e5c209735ca47" +dependencies = [ + "bzip2-sys", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.13+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" +dependencies = [ + "cc", + "pkg-config", +] + +[[package]] +name = "cc" +version = "1.2.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + [[package]] name = "cfg-if" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + [[package]] name = "clap" version = "4.5.60" @@ -116,6 +210,45 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + [[package]] name = "crossbeam-deque" version = "0.8.6" @@ -141,6 +274,16 @@ version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + [[package]] name = "dashmap" version = "6.1.0" @@ -149,42 +292,318 @@ checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" dependencies = [ "cfg-if", "crossbeam-utils", - "hashbrown", + "hashbrown 0.14.5", "lock_api", "once_cell", "parking_lot_core", ] +[[package]] +name = "deflate64" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "807800ff3288b621186fe0a8f3392c4652068257302709c24efd918c3dffcdc2" + +[[package]] +name = "deranged" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derive_arbitrary" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", + "subtle", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + [[package]] name = "fastrand" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + +[[package]] +name = "flate2" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi", + "wasip2", + "wasm-bindgen", +] + [[package]] name = "hashbrown" version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" + [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +dependencies = [ + "equivalent", + "hashbrown 0.16.1", +] + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "generic-array", +] + [[package]] name = "is_terminal_polyfill" version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.4", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + [[package]] name = "libc" version = "0.2.182" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +[[package]] +name = "litemap" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" + [[package]] name = "lock_api" version = "0.4.14" @@ -194,6 +613,55 @@ dependencies = [ "scopeguard", ] +[[package]] +name = "log" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" + +[[package]] +name = "lzma-rs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "297e814c836ae64db86b36cf2a557ba54368d03f6afcd7d947c266692f71115e" +dependencies = [ + "byteorder", + "crc", +] + +[[package]] +name = "lzma-sys" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "memchr" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "num-conv" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" + [[package]] name = "once_cell" version = "1.21.3" @@ -217,6 +685,8 @@ dependencies = [ "phf", "soa-rs", "unicode-width", + "ureq", + "zip", ] [[package]] @@ -232,6 +702,22 @@ dependencies = [ "windows-link", ] +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest", + "hmac", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + [[package]] name = "phf" version = "0.13.1" @@ -276,11 +762,32 @@ dependencies = [ ] [[package]] -name = "proc-macro2" -version = "1.0.106" +name = "pkg-config" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" -dependencies = [ +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ "unicode-ident", ] @@ -293,6 +800,12 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "redox_syscall" version = "0.5.18" @@ -302,6 +815,61 @@ dependencies = [ "bitflags", ] +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.17", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.23.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4" +dependencies = [ + "log", + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pki-types" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" +dependencies = [ + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + [[package]] name = "scopeguard" version = "1.2.0" @@ -337,6 +905,29 @@ dependencies = [ "syn", ] +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "simd-adler32" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" + [[package]] name = "siphasher" version = "1.0.2" @@ -369,12 +960,24 @@ dependencies = [ "syn", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + [[package]] name = "strsim" version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + [[package]] name = "syn" version = "2.0.117" @@ -386,6 +989,72 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thiserror" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "time" +version = "0.3.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" +dependencies = [ + "deranged", + "num-conv", + "powerfmt", + "serde_core", + "time-core", +] + +[[package]] +name = "time-core" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" + +[[package]] +name = "tinystr" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + [[package]] name = "unicode-ident" version = "1.0.24" @@ -398,18 +1067,151 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "ureq" +version = "2.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d1a66277ed75f640d608235660df48c8e3c19f3b4edb6a263315626cc3c01d" +dependencies = [ + "base64", + "flate2", + "log", + "once_cell", + "rustls", + "rustls-pki-types", + "url", + "webpki-roots 0.26.11", +] + +[[package]] +name = "url" +version = "2.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.2+wasi-0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "webpki-roots" +version = "0.26.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" +dependencies = [ + "webpki-roots 1.0.6", +] + +[[package]] +name = "webpki-roots" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cfaf3c063993ff62e73cb4311efde4db1efb31ab78a3e5c457939ad5cc0bed" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "windows-link" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + [[package]] name = "windows-sys" version = "0.61.2" @@ -418,3 +1220,255 @@ checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ "windows-link", ] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "wit-bindgen" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" + +[[package]] +name = "writeable" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" + +[[package]] +name = "xz2" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2" +dependencies = [ + "lzma-sys", +] + +[[package]] +name = "yoke" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zip" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" +dependencies = [ + "aes", + "arbitrary", + "bzip2", + "constant_time_eq", + "crc32fast", + "crossbeam-utils", + "deflate64", + "displaydoc", + "flate2", + "getrandom 0.3.4", + "hmac", + "indexmap", + "lzma-rs", + "memchr", + "pbkdf2", + "sha1", + "thiserror", + "time", + "xz2", + "zeroize", + "zopfli", + "zstd", +] + +[[package]] +name = "zopfli" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" +dependencies = [ + "bumpalo", + "crc32fast", + "log", + "simd-adler32", +] + +[[package]] +name = "zstd" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.16+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/oryxc/Cargo.toml b/oryxc/Cargo.toml index aeeea7d..9b13471 100644 --- a/oryxc/Cargo.toml +++ b/oryxc/Cargo.toml @@ -14,3 +14,10 @@ unicode-width = "0.2.2" # num-rational = "0.4.2" # icu = { version = "2.1.1", features = ["compiled_data"] } + +[features] +fetch = ["dep:ureq", "dep:zip"] + +[build-dependencies] +ureq = { version = "2", optional = true } +zip = { version = "2", optional = true } diff --git a/oryxc/build.rs b/oryxc/build.rs index 06a35ee..8de0327 100644 --- a/oryxc/build.rs +++ b/oryxc/build.rs @@ -1,261 +1,289 @@ -use std::collections::HashMap; -use std::env; -use std::fs::{ - self, - File, -}; -use std::io::{ - self, - BufRead, - BufReader, - Write, -}; -use std::path::Path; -use std::process::Command; - -const MIN_SHIFT: usize = 1; -const MAX_SHIFT: usize = 22; +const NAMES: &[&str] = &[ + "xid_start", + "xid_continue", + "pattern_white_space", + "line_terminator", +]; fn main() { + use std::env; + let out_dir = env::var("OUT_DIR").unwrap(); - let data = format!("{out_dir}/data"); - - println!("cargo:rerun-if-changed={data}/DerivedCoreProperties.txt"); - println!("cargo:rerun-if-changed={data}/PropList.txt"); - - fetch_data_if_missing(&out_dir, &data); - - generate_from_file( - &out_dir, - &format!("{data}/DerivedCoreProperties.txt"), - "XID_Start", - "xid_start", - ); - generate_from_file( - &out_dir, - &format!("{data}/DerivedCoreProperties.txt"), - "XID_Continue", - "xid_continue", - ); - generate_from_file( - &out_dir, - &format!("{data}/PropList.txt"), - "Pattern_White_Space", - "pattern_white_space", - ); - generate_from_codepoints( - &out_dir, - &[ - '\u{A}', '\u{B}', '\u{C}', '\u{D}', '\u{85}', '\u{2028}', - '\u{2029}', - ], - "line_terminator", - ); -} + let root = env::var("CARGO_MANIFEST_DIR").unwrap(); + let generated = format!("{root}/generated"); -/// Fetches unicode data files if missing. Replaces the fetch script. -fn fetch_data_if_missing(out_dir: &str, data: &str) { - let derived = format!("{data}/DerivedCoreProperties.txt"); - let proplist = format!("{data}/PropList.txt"); - if Path::new(&derived).exists() && Path::new(&proplist).exists() { - // Data exists - return; - } + #[cfg(feature = "fetch")] + fetch::run(&out_dir, &generated); - let zip = format!("{out_dir}/UCD.zip"); - - // curl -LO https://www.unicode.org/Public/zipped/latest/UCD.zip - let status = Command::new("curl") - .args([ - "-Lo", - &zip, - "https://www.unicode.org/Public/zipped/latest/UCD.zip", - ]) - .status() - .expect("failed to run curl"); - assert!(status.success(), "curl failed to download UCD.zip"); - - // mkdir -p data - fs::create_dir_all(data).unwrap(); - - // unzip -od data UCD.zip - let status = Command::new("unzip") - .args(["-od", data, &zip]) - .status() - .expect("failed to run unzip"); - assert!(status.success(), "unzip failed"); - - fs::remove_file(&zip).ok(); - - // XID_Start and XID_Continue additions - let mut f = fs::OpenOptions::new() - .append(true) - .open(&derived) - .expect("failed to open DerivedCoreProperties.txt"); - writeln!( - f, - "0024 ; XID_Start # Pc DOLLAR SIGN\n\ - 005F ; XID_Start # Pc LOW LINE\n\ - 2032..2034 ; XID_Continue # Po [3] PRIME..TRIPLE PRIME\n\ - 2057 ; XID_Continue # Po QUADRUPLE PRIME" - ) - .unwrap(); + #[cfg(not(feature = "fetch"))] + fallback::run(&out_dir, &generated); } -fn generate_from_file(out_dir: &str, path: &str, prop: &str, name: &str) { - let mut bitmap = vec![false; 0x110000]; - parse_file(path, prop, &mut bitmap) - .unwrap_or_else(|e| panic!("failed to read {path}: {e}")); - write_output(out_dir, name, &bitmap); -} +#[cfg(feature = "fetch")] +mod fetch { + use std::collections::HashMap; + use std::fs; + use std::io::{ + self, + BufRead, + BufReader, + Cursor, + Read, + Write, + }; -fn generate_from_codepoints(out_dir: &str, codepoints: &[char], name: &str) { - let mut bitmap = vec![false; 0x110000]; - for &c in codepoints { - bitmap[c as usize] = true; - } - write_output(out_dir, name, &bitmap); -} + const MIN_SHIFT: usize = 1; + const MAX_SHIFT: usize = 22; + const UCD_URL: &str = + "https://www.unicode.org/Public/zipped/latest/UCD.zip"; + + pub fn run(out_dir: &str, generated: &str) { + let data = format!("{out_dir}/data"); + let derived = format!("{data}/DerivedCoreProperties.txt"); + let proplist = format!("{data}/PropList.txt"); + + println!("cargo:rerun-if-changed={derived}"); + println!("cargo:rerun-if-changed={proplist}"); + + if !fs::exists(&derived).unwrap_or(false) + || !fs::exists(&proplist).unwrap_or(false) + { + let mut bytes = Vec::new(); + ureq::get(UCD_URL) + .call() + .expect("failed to download UCD.zip") + .into_reader() + .read_to_end(&mut bytes) + .expect("failed to read UCD.zip"); + + fs::create_dir_all(&data).unwrap(); + zip::ZipArchive::new(Cursor::new(bytes)) + .expect("failed to open UCD.zip") + .extract(&data) + .expect("failed to extract UCD.zip"); + + // XID_Start and XID_Continue additions + let mut f = fs::OpenOptions::new() + .append(true) + .open(&derived) + .expect("failed to open DerivedCoreProperties.txt"); + writeln!( + f, + "0024 ; XID_Start # Pc DOLLAR SIGN\n\ + 005F ; XID_Start # Pc LOW LINE\n\ + 2032..2034 ; XID_Continue # Po [3] PRIME..TRIPLE PRIME\n\ + 2057 ; XID_Continue # Po QUADRUPLE PRIME" + ) + .unwrap(); + } -fn write_output(out_dir: &str, name: &str, bitmap: &[bool]) { - let (shift, lvl1, lvl2) = optimize_tables(bitmap); - let mut f = File::create(format!("{out_dir}/{name}.rs")).unwrap(); - generate_code(&mut f, name, shift, &lvl1, &lvl2); -} + generate_from_file(out_dir, &derived, "XID_Start", "xid_start"); + generate_from_file(out_dir, &derived, "XID_Continue", "xid_continue"); + generate_from_file( + out_dir, + &proplist, + "Pattern_White_Space", + "pattern_white_space", + ); + generate_from_codepoints( + out_dir, + &[ + '\u{A}', '\u{B}', '\u{C}', '\u{D}', '\u{85}', '\u{2028}', + '\u{2029}', + ], + "line_terminator", + ); + + // Keep generated/ in sync so it can be committed as a fallback + fs::create_dir_all(generated).unwrap(); + for name in super::NAMES { + fs::copy( + format!("{out_dir}/{name}.rs"), + format!("{generated}/{name}.rs"), + ) + .unwrap_or_else(|e| { + panic!("failed to copy {name}.rs to generated/: {e}") + }); + } + } -fn optimize_tables(bitmap: &[bool]) -> (usize, Vec, Vec) { - let mut minsz = usize::MAX; - let mut config = (0, Vec::new(), Vec::new()); + fn generate_from_file(out_dir: &str, path: &str, prop: &str, name: &str) { + let mut bitmap = vec![false; 0x110000]; + parse_file(path, prop, &mut bitmap) + .unwrap_or_else(|e| panic!("failed to read {path}: {e}")); + write_output(out_dir, name, &bitmap); + } - for i in MIN_SHIFT..=MAX_SHIFT { - let (l1, l2) = build_tables(bitmap, i); - let sz = l1.len() * 2 + l2.len() * 8; - if sz < minsz { - minsz = sz; - config = (i, l1, l2); + fn generate_from_codepoints( + out_dir: &str, + codepoints: &[char], + name: &str, + ) { + let mut bitmap = vec![false; 0x110000]; + for &c in codepoints { + bitmap[c as usize] = true; } + write_output(out_dir, name, &bitmap); } - config -} + fn write_output(out_dir: &str, name: &str, bitmap: &[bool]) { + let (shift, lvl1, lvl2) = optimize_tables(bitmap); + let mut f = fs::File::create(format!("{out_dir}/{name}.rs")).unwrap(); + generate_code(&mut f, name, shift, &lvl1, &lvl2); + } -fn parse_file(path: &str, prop: &str, bitmap: &mut [bool]) -> io::Result<()> { - let file = File::open(path)?; - let reader = BufReader::new(file); + fn optimize_tables(bitmap: &[bool]) -> (usize, Vec, Vec) { + let mut minsz = usize::MAX; + let mut config = (0, Vec::new(), Vec::new()); - for line in reader.lines() { - let line = line?; - let line = line.split('#').next().unwrap_or("").trim(); - if line.is_empty() { - continue; + for i in MIN_SHIFT..=MAX_SHIFT { + let (l1, l2) = build_tables(bitmap, i); + let sz = l1.len() * 2 + l2.len() * 8; + if sz < minsz { + minsz = sz; + config = (i, l1, l2); + } } - let parts: Vec<&str> = line.split(';').map(|s| s.trim()).collect(); - if parts.len() < 2 || parts[1] != prop { - continue; - } + config + } - let (beg, end) = if parts[0].contains("..") { - let mut range = parts[0].split(".."); - ( - u32::from_str_radix(range.next().unwrap(), 16).unwrap(), - u32::from_str_radix(range.next().unwrap(), 16).unwrap(), - ) - } else { - let val = u32::from_str_radix(parts[0], 16).unwrap(); - (val, val) - }; + fn parse_file( + path: &str, + prop: &str, + bitmap: &mut [bool], + ) -> io::Result<()> { + let file = fs::File::open(path)?; + let reader = BufReader::new(file); + + for line in reader.lines() { + let line = line?; + let line = line.split('#').next().unwrap_or("").trim(); + if line.is_empty() { + continue; + } - for cp in beg..=end { - if (cp as usize) < bitmap.len() { - bitmap[cp as usize] = true; + let parts: Vec<&str> = line.split(';').map(|s| s.trim()).collect(); + if parts.len() < 2 || parts[1] != prop { + continue; + } + + let (beg, end) = if parts[0].contains("..") { + let mut range = parts[0].split(".."); + ( + u32::from_str_radix(range.next().unwrap(), 16).unwrap(), + u32::from_str_radix(range.next().unwrap(), 16).unwrap(), + ) + } else { + let val = u32::from_str_radix(parts[0], 16).unwrap(); + (val, val) + }; + + for cp in beg..=end { + if (cp as usize) < bitmap.len() { + bitmap[cp as usize] = true; + } } } + + Ok(()) } - Ok(()) -} + fn build_tables(bitmap: &[bool], shift: usize) -> (Vec, Vec) { + let blksz = 1 << shift; + let u64s_per_block = (blksz + 63) / 64; -fn build_tables(bitmap: &[bool], shift: usize) -> (Vec, Vec) { - let blksz = 1 << shift; - let u64s_per_block = (blksz + 63) / 64; + let mut lvl2: Vec = Vec::new(); + let mut lvl1: Vec = Vec::new(); + let mut blkmap: HashMap, u16> = HashMap::new(); - let mut lvl2: Vec = Vec::new(); - let mut lvl1: Vec = Vec::new(); - let mut blkmap: HashMap, u16> = HashMap::new(); + for chunk in bitmap.chunks(blksz) { + let mut blkdata = vec![0u64; u64s_per_block]; - for chunk in bitmap.chunks(blksz) { - let mut blkdata = vec![0u64; u64s_per_block]; + for (i, &bit) in chunk.iter().enumerate() { + if bit { + let word_idx = i / 64; + let bit_idx = i % 64; + blkdata[word_idx] |= 1 << bit_idx; + } + } - for (i, &bit) in chunk.iter().enumerate() { - if bit { - let word_idx = i / 64; - let bit_idx = i % 64; - blkdata[word_idx] |= 1 << bit_idx; + if let Some(&i) = blkmap.get(&blkdata) { + lvl1.push(i); + } else { + let i = (lvl2.len() / u64s_per_block) as u16; + lvl2.extend_from_slice(&blkdata); + blkmap.insert(blkdata, i); + lvl1.push(i); } } - if let Some(&i) = blkmap.get(&blkdata) { - lvl1.push(i); - } else { - let i = (lvl2.len() / u64s_per_block) as u16; - lvl2.extend_from_slice(&blkdata); - blkmap.insert(blkdata, i); - lvl1.push(i); - } + (lvl1, lvl2) } - (lvl1, lvl2) -} - -fn generate_code( - f: &mut impl Write, - prop_name: &str, - shift: usize, - level1: &[u16], - level2: &[u64], -) { - let upper_name = prop_name.to_uppercase(); - let lower_name = prop_name.to_lowercase(); - let block_size = 1 << shift; - let mask = block_size - 1; - let u64s_per_block = (block_size + 63) / 64; - - let pred_name = if lower_name.contains('_') { - format!("{lower_name}_p") - } else { - format!("{lower_name}p") - }; + fn generate_code( + f: &mut impl Write, + prop_name: &str, + shift: usize, + level1: &[u16], + level2: &[u64], + ) { + let upper_name = prop_name.to_uppercase(); + let lower_name = prop_name.to_lowercase(); + let block_size = 1 << shift; + let mask = block_size - 1; + let u64s_per_block = (block_size + 63) / 64; + + let pred_name = if lower_name.contains('_') { + format!("{lower_name}_p") + } else { + format!("{lower_name}p") + }; - writeln!(f, "/* Autogenerated – DO NOT EDIT */").unwrap(); - writeln!(f).unwrap(); - writeln!( - f, - "static {upper_name}_L1: [u16; {}] = {level1:?};", - level1.len() - ) - .unwrap(); - writeln!( - f, - "static {upper_name}_L2: [u64; {}] = {level2:?};", - level2.len() - ) - .unwrap(); - writeln!(f, "#[inline]").unwrap(); - writeln!(f, "pub fn {pred_name}(c: char) -> bool {{").unwrap(); - writeln!(f, "\tlet cp = c as usize;").unwrap(); - writeln!(f, "\tlet blki = unsafe {{ *{upper_name}_L1.get_unchecked(cp >> {shift}) }} as usize;").unwrap(); - writeln!(f, "\tlet in_blk_offset_p = cp & 0x{mask:X};").unwrap(); - if u64s_per_block == 1 { - writeln!(f, "\tunsafe {{ return ({upper_name}_L2.get_unchecked(blki) & (1 << in_blk_offset_p)) != 0; }}").unwrap(); - } else { + writeln!(f, "/* Autogenerated – DO NOT EDIT */").unwrap(); + writeln!(f).unwrap(); writeln!( f, - "\tlet wordi = (blki * {u64s_per_block}) + (in_blk_offset_p >> 6);" + "static {upper_name}_L1: [u16; {}] = {level1:?};", + level1.len() ) .unwrap(); - writeln!(f, "\tlet biti = in_blk_offset_p & 0x3F;").unwrap(); - writeln!(f, "\tunsafe {{ return (*{upper_name}_L2.get_unchecked(wordi) & (1 << biti)) != 0; }}").unwrap(); + writeln!( + f, + "static {upper_name}_L2: [u64; {}] = {level2:?};", + level2.len() + ) + .unwrap(); + writeln!(f, "#[inline]").unwrap(); + writeln!(f, "pub fn {pred_name}(c: char) -> bool {{").unwrap(); + writeln!(f, "\tlet cp = c as usize;").unwrap(); + writeln!(f, "\tlet blki = unsafe {{ *{upper_name}_L1.get_unchecked(cp >> {shift}) }} as usize;").unwrap(); + writeln!(f, "\tlet in_blk_offset_p = cp & 0x{mask:X};").unwrap(); + if u64s_per_block == 1 { + writeln!(f, "\tunsafe {{ return ({upper_name}_L2.get_unchecked(blki) & (1 << in_blk_offset_p)) != 0; }}").unwrap(); + } else { + writeln!( + f, + "\tlet wordi = (blki * {u64s_per_block}) + (in_blk_offset_p >> 6);" + ) + .unwrap(); + writeln!(f, "\tlet biti = in_blk_offset_p & 0x3F;").unwrap(); + writeln!(f, "\tunsafe {{ return (*{upper_name}_L2.get_unchecked(wordi) & (1 << biti)) != 0; }}").unwrap(); + } + writeln!(f, "}}").unwrap(); + } +} + +#[cfg(not(feature = "fetch"))] +mod fallback { + use std::fs; + + pub fn run(out_dir: &str, generated: &str) { + for name in super::NAMES { + let src = format!("{generated}/{name}.rs"); + println!("cargo:rerun-if-changed={src}"); + fs::copy(&src, format!("{out_dir}/{name}.rs")) + .unwrap_or_else(|e| panic!("failed to copy {src}: {e}")); + } } - writeln!(f, "}}").unwrap(); } diff --git a/oryxc/generated/line_terminator.rs b/oryxc/generated/line_terminator.rs new file mode 100644 index 0000000..d29f4bd --- /dev/null +++ b/oryxc/generated/line_terminator.rs @@ -0,0 +1,13 @@ +/* Autogenerated – DO NOT EDIT */ + +static LINE_TERMINATOR_L1: [u16; 544] = [0, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +static LINE_TERMINATOR_L2: [u64; 96] = [15360, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3298534883328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; +#[inline] +pub fn line_terminator_p(c: char) -> bool { + let cp = c as usize; + let blki = unsafe { *LINE_TERMINATOR_L1.get_unchecked(cp >> 11) } as usize; + let in_blk_offset_p = cp & 0x7FF; + let wordi = (blki * 32) + (in_blk_offset_p >> 6); + let biti = in_blk_offset_p & 0x3F; + unsafe { return (*LINE_TERMINATOR_L2.get_unchecked(wordi) & (1 << biti)) != 0; } +} diff --git a/oryxc/generated/pattern_white_space.rs b/oryxc/generated/pattern_white_space.rs new file mode 100644 index 0000000..e71b59d --- /dev/null +++ b/oryxc/generated/pattern_white_space.rs @@ -0,0 +1,13 @@ +/* Autogenerated – DO NOT EDIT */ + +static PATTERN_WHITE_SPACE_L1: [u16; 544] = [0, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +static PATTERN_WHITE_SPACE_L2: [u64; 96] = [4294983168, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3298534932480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; +#[inline] +pub fn pattern_white_space_p(c: char) -> bool { + let cp = c as usize; + let blki = unsafe { *PATTERN_WHITE_SPACE_L1.get_unchecked(cp >> 11) } as usize; + let in_blk_offset_p = cp & 0x7FF; + let wordi = (blki * 32) + (in_blk_offset_p >> 6); + let biti = in_blk_offset_p & 0x3F; + unsafe { return (*PATTERN_WHITE_SPACE_L2.get_unchecked(wordi) & (1 << biti)) != 0; } +} diff --git a/oryxc/generated/xid_continue.rs b/oryxc/generated/xid_continue.rs new file mode 100644 index 0000000..834672c --- /dev/null +++ b/oryxc/generated/xid_continue.rs @@ -0,0 +1,13 @@ +/* Autogenerated – DO NOT EDIT */ + +static XID_CONTINUE_L1: [u16; 1088] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 10, 11, 12, 12, 12, 12, 12, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 15, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 16, 9, 9, 9, 9, 9, 9, 9, 9, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 9, 29, 12, 30, 12, 12, 31, 32, 9, 9, 9, 9, 9, 9, 33, 9, 34, 35, 12, 12, 12, 12, 12, 12, 12, 36, 9, 9, 9, 9, 9, 9, 9, 37, 38, 9, 9, 39, 9, 9, 9, 40, 41, 42, 43, 44, 45, 46, 47, 48, 9, 9, 49, 9, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 50, 12, 12, 12, 12, 51, 12, 12, 12, 12, 52, 12, 12, 12, 12, 12, 12, 53, 54, 9, 9, 55, 9, 12, 12, 12, 12, 56, 12, 12, 12, 12, 12, 12, 12, 12, 57, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 58, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9]; +static XID_CONTINUE_L2: [u64; 944] = [287948901175001088, 576460745995190270, 333270770471927808, 18410715276682199039, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 88094074470339, 18446744073709551615, 13321647697761927167, 18446744056529672128, 18428729675200069631, 18446744073709551615, 18446744073709551615, 18446744073709550843, 18446744073709551615, 18446462598732840959, 18446744069456527359, 13835058055282033151, 2119858418286774, 18446744069548736512, 18446678103011885055, 18446744073709551615, 11529212845433552895, 18446744073709486080, 18446744073709545471, 1125899906842623, 2612087783874887679, 70368744177663, 18446471390799331327, 18446744073701228287, 18446744056529682431, 18446744073709551615, 18446462392574410751, 17565725197581524975, 5765733215448889759, 15235112390417287150, 18014125208779143, 17576984196650090478, 18302910150157089727, 17576984196649951214, 844217444219295, 14123225865944680428, 281200107273671, 17582050746231021567, 281265452367327, 17577547146603651055, 4221916082617823, 18446744073709412351, 18158794964244397535, 3457638613854978030, 3658904103781503, 576460752303423486, 67076095, 4611685674830002134, 4093607775, 14024213633433600001, 18446216308128218879, 2305843009196916703, 64, 18446744073709551615, 18446744073709487103, 18446744070488326143, 17870283321406070975, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744070446333439, 9168765891372858879, 18446744073701162813, 18446744073696837631, 1123704775901183, 18446744069414649855, 4557642822898941951, 18446744073709551614, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446638520593285119, 18446744069548802046, 144053615424700415, 9007197111451647, 3905461007941631, 18446744073709551615, 4394566287359, 18446744069481674752, 144115188075855871, 18446471394825863167, 18014398509481983, 1152657619668697087, 8796093022207936, 18446480190918885375, 134153215, 18446744069683019775, 11529215043920986111, 13834777130128311295, 17588964818943, 18446744073709551615, 4494803601399807, 18446744073709551615, 4503599627370495, 72057594037927935, 4611686018427380735, 16717361816799217663, 576460752302833664, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744070475743231, 4611686017001275199, 6908521828386340863, 2295745090394464220, 9231253336202686464, 9223934986817634305, 536805376, 562821641207808, 17582049991377026180, 18446744069414601696, 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18446744073709551615, 18446744073709551615, 18446744073709551615, 4494940973301759, 18446498607738650623, 9223513873854758911, 9187201948305063935, 18446744071553646463, 0, 0, 0, 0, 0, 0, 0, 0, 2251518330118602976, 18446744073709551614, 18446744068986765311, 18446744073709551615, 18446462598732840928, 18446744073709551615, 18446744069414617087, 18446462598732840960, 0, 0, 0, 0, 0, 0, 0, 0, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 0, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 8191, 4611686018427322368, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 17592185987071, 13830835930631503871, 18446744073709551615, 1125899906842623, 18446744060816261120, 18446744073709551615, 18446744073709550079, 18446181124293001215, 18691697672191, 4503599627370495, 18446744073709551615, 16789419406609285183, 18446532967477018623, 2305843004919775231, 18446744073709551615, 9223372032626884609, 36028797018963967, 18194542490348896255, 18446744073709551615, 35184368733388807, 18446602782178705022, 18446466996645134335, 18446744073709551615, 288010473826156543, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446462667452317695, 1152921504606845055, 0, 0, 0, 0, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446532967477018623, 18446744073709551615, 67108863, 6881498031078244479, 18446744073709551579, 1125899906842623, 18446744073709027328, 18446744073709551615, 18446744006063816703, 18446744073709551615, 18446744073709551615, 4611686018427387903, 18446744073709486080, 18446744073709355007, 287948901175001343, 7036870122864639, 12288634533233876992, 18446744073709551615, 2305843009213693951, 9799832780635308032, 18446743936404815870, 9223372036854775807, 486341884, 13258596753222922239, 1073692671, 18446744073709551615, 576460752303423487, 0, 9007199254740991, 0, 2305843009213693952, 0, 0, 18446744069951455231, 4295098367, 18446708893632430079, 576460752303359999, 18446744070488326143, 4128527, 18446744073709551615, 18446744073709551615, 18446466993558126591, 1152921504591118335, 18446463698244468735, 17870001915148894207, 2016486715970549759, 4503599627370495, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 36028797018963967, 1095220854783, 575897802350002111, 0, 10502394331027995967, 36028792728190975, 2147483647, 15762594400829440, 288230371860938751, 67108863, 13907115649320091647, 0, 9745789593611923567, 2305843004918726656, 536870911, 549755813631, 18014398509481983, 2251795522912255, 262143, 0, 18446744073709551615, 511, 2251799813685247, 2251799813685247, 287950000686628863, 18446671780820025343, 63, 0, 0, 0, 875211255709695, 18158513697557840124, 18446463149025525759, 18446462598732972031, 18446462598732841023, 36028792723996703, 18446744073709551615, 9241386160486350975, 576460752303423487, 287951100198191108, 18437736874454810623, 22517998136787184, 18446744073709551615, 402644511, 13907115649319829503, 3, 18446464796682337663, 287957697268023295, 18153444948953374703, 8760701963286943, 18428729675200023551, 25770850213, 18446744073709551615, 16173172735, 18446744073709551615, 67043519, 0, 0, 18392700878181105663, 1056964609, 18446744073709551615, 67043345, 144115188075855871, 68719412223, 287966492958392319, 127, 0, 0, 576460752303423487, 0, 18446744069414584320, 9223376434901286911, 17996384110963061375, 67043343, 18446740770879700992, 120208752639, 9223372036854775807, 18446744073709486208, 18446462599336820735, 144115188075855871, 0, 1095216660480, 0, 287948909764935679, 18410715276690587135, 18445618173869752321, 36027697507139583, 0, 13006395723845991295, 18446741595580465407, 18446466992517644287, 4394019979263, 0, 0, 0, 36028792723996672, 14411518807585456127, 134152199, 281474976710656, 0, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 67108863, 0, 18446744073709551615, 140737488355327, 18446744073709551615, 18446744073709551615, 18446744073709551615, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18446744073709486080, 562949953421311, 281474976710655, 18446744069418778623, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 576460752303423487, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 288230376151711743, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 144115188075855871, 18446466994631868415, 9223372036854775807, 8796093022143487, 36028797018963967, 16212958624241090575, 65535, 0, 0, 0, 0, 0, 0, 287984085547089919, 0, 0, 0, 18446744073709551615, 18014398505187016704, 1048575, 18446744073709551615, 18446744073709520895, 4294934783, 35747438006370304, 18446744073709551615, 18446744073709551615, 18446744073709551615, 9223372036858970111, 2147483647, 0, 18446744073709551615, 2251799813685247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8065665457643847680, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 1125934266580991, 18446463629527547904, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 1152921504606846975, 0, 0, 0, 0, 18446744073709551615, 2305570330330005503, 1677656575, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 287948901175001088, 0, 0, 0, 0, 0, 0, 0, 0, 18446532967477018623, 127, 0, 0, 0, 0, 0, 0, 0, 17872504197455282176, 65970697670631, 0, 0, 28, 0, 0, 0, 0, 0, 0, 18446744073709551615, 18446744073707454463, 17005555242810474495, 18446744073709551599, 8935141660164089791, 18446744073709419615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446743249075830783, 17870283321271910397, 18437736874452713471, 18446603336221163519, 18446741874686295551, 18446744073709539319, 0, 0, 0, 0, 0, 0, 0, 0, 17906312118425092095, 9042383626829823, 281470547525648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8660801552383, 0, 0, 0, 18446471240106377087, 70368744177663, 32768, 0, 4611439727822766079, 17407, 0, 0, 0, 0, 140737488289792, 288230376151711743, 0, 0, 0, 0, 0, 0, 0, 288230376151646208, 0, 0, 0, 576460752303357952, 0, 0, 0, 13853072451644162047, 0, 0, 0, 9223213153129594880, 18446744073709551615, 18446744073709551615, 18446744073709551615, 8323103, 18446744073709551615, 67047423, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 790380184120328175, 6843210385291930244, 1152917029519358975, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 287948901175001088, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 4294967295, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744070488326143, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446532967477018623, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446462607322775551, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 1073741823, 0, 0, 0, 0, 0, 0, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 1073741823, 0, 0, 0, 0, 0, 0, 0, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709488127, 18446744073709551615, 18446744073709551615, 18446744073709551615, 288230376151711743, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18446744073709551615, 18446744073709551615, 18446744073709551615, 281474976710655, 0, 0, 0, 0, 0, 0, 0, 0]; +#[inline] +pub fn xid_continue_p(c: char) -> bool { + let cp = c as usize; + let blki = unsafe { *XID_CONTINUE_L1.get_unchecked(cp >> 10) } as usize; + let in_blk_offset_p = cp & 0x3FF; + let wordi = (blki * 16) + (in_blk_offset_p >> 6); + let biti = in_blk_offset_p & 0x3F; + unsafe { return (*XID_CONTINUE_L2.get_unchecked(wordi) & (1 << biti)) != 0; } +} diff --git a/oryxc/generated/xid_start.rs b/oryxc/generated/xid_start.rs new file mode 100644 index 0000000..78b5844 --- /dev/null +++ b/oryxc/generated/xid_start.rs @@ -0,0 +1,13 @@ +/* Autogenerated – DO NOT EDIT */ + +static XID_START_L1: [u16; 1088] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 10, 11, 12, 12, 12, 12, 12, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 15, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 16, 9, 9, 9, 9, 9, 9, 9, 9, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 9, 29, 12, 30, 12, 12, 31, 32, 9, 9, 9, 9, 9, 9, 33, 9, 34, 35, 12, 12, 12, 12, 12, 12, 12, 36, 9, 9, 9, 9, 9, 9, 9, 37, 38, 9, 9, 39, 9, 9, 9, 9, 9, 40, 9, 41, 42, 43, 44, 45, 9, 9, 9, 9, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 46, 12, 12, 12, 12, 47, 12, 12, 12, 12, 48, 12, 12, 12, 12, 12, 12, 49, 50, 9, 9, 51, 9, 12, 12, 12, 12, 52, 12, 12, 12, 12, 12, 12, 12, 12, 53, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9]; +static XID_START_L2: [u64; 864] = [68719476736, 576460745995190270, 297241973452963840, 18410715276682199039, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 88094074470339, 0, 13321366222785216512, 18446744056529672000, 18428729675200069631, 18446744073709551615, 18446744073709551615, 18446744073709550595, 18446744073709551615, 18446462598732840959, 18446744069456527359, 511, 2119858418286592, 18446744069414584320, 18446392229988665343, 18446744073709551615, 11241196188469297151, 281474976514048, 18446744073709543424, 563224831328255, 301749971126844416, 1168302407679, 18446471390564450303, 18446744069414649599, 1023, 2594073385365405680, 18446181140919287808, 2577745637692514273, 1153765945374687232, 247132830528276448, 7881300924956672, 2589004636761079776, 144115200960823296, 2589004636760940512, 562965791113216, 288167810662516712, 65536, 2594071186342010848, 13807648768, 2589567586714640353, 1688864624214016, 2882303761516978160, 18158513712597581824, 3457638613854978016, 127, 1688849860263934, 127, 2307531515476572118, 4026531935, 1, 35184372088575, 7936, 0, 9223380832947798015, 18438229877581611008, 18446744069414600707, 17870283321406070975, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744070446333439, 9168765891372858879, 18446744073701162813, 18446744073696837631, 134217727, 18446744069414649855, 4557642822898941951, 18446744073709551614, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446638520593285119, 18446744069548802046, 144053615424700415, 1125897759621119, 527761286627327, 4503599627370495, 276824064, 18446744069414584320, 144115188075855871, 18446469195802607615, 18014398509481983, 2147483647, 8796093022142464, 18446480190918885375, 1023, 18446744069422972927, 2097151, 549755813888, 0, 4503599627370464, 8160, 18158724812380307448, 274877906943, 68719476735, 4611686018360336384, 16717361816799217663, 319718190147960832, 18446744073709551615, 18446744073709551615, 18446744073709551615, 0, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744070475743231, 4611686017001275199, 6908521828386340863, 2295745090394464220, 0, 9223934986808197120, 536805376, 0, 17582049991377026180, 18446744069414601696, 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18446744073709551615, 18446744073709551615, 18446744073709551615, 3509778554814463, 18446498607738650623, 141836999983103, 9187201948305063935, 2139062143, 0, 0, 0, 0, 0, 0, 0, 0, 2251241253188403424, 18446744073709551614, 18446744068886102015, 17870283321406128127, 18446462598732840928, 18446744073709551615, 18446744069414617087, 18446462598732840960, 0, 0, 0, 0, 0, 0, 0, 0, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 0, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 8191, 4611686018427322368, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 13198434443263, 9223512774343131135, 18446744070488326143, 281474976710655, 18446744060816261120, 18446744073709551615, 18446744073709550079, 18446181124293001215, 34359736251, 4503599627370495, 4503599627370492, 7564921474075590656, 18446462873610746880, 2305843004918726783, 2251799813685232, 8935422993945886720, 2199023255551, 14159317224157876215, 4495436853045886975, 7890092085477381, 18446602782178705022, 18446466996645134335, 18446744073709551615, 34359738367, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446462667452317695, 1152921504606845055, 0, 0, 0, 0, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446532967477018623, 18446744073709551615, 67108863, 6881498030004502655, 18446744073709551579, 1125899906842623, 18446744073709027328, 18446744073709551615, 18446744006063816703, 18446744073709551615, 18446744073709551615, 4611686018427387903, 18446744073709486080, 18446744073709355007, 287948901175001343, 0, 12288634533233819648, 18446744073709551615, 2305843009213693951, 576460743713488896, 18446743798965862398, 9223372033633550335, 486341884, 13258596753222922239, 1073692671, 18446744073709551615, 576460752303423487, 0, 9007199254740991, 0, 0, 0, 0, 18446744069951455231, 131071, 18446708893632430079, 18014398509418495, 18446744070488326143, 4128527, 18446744073709551615, 18446744073709551615, 18446462599806582783, 1152921504591118335, 18446463698244468735, 17870001915148894207, 2016486715970549759, 4503599627370495, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 36028797018963967, 1095220854783, 575897802350002111, 0, 10502394331027995967, 36028792728190975, 2147483647, 15762594400829440, 288230371860938751, 67108863, 13907115649320091647, 0, 18014398491590657, 2305843004918726656, 536870911, 137438953215, 18014398509481983, 2251795522912255, 262143, 0, 18446744073709551615, 511, 2251799813685247, 2251799813685247, 68719476735, 18446603611099102208, 63, 0, 0, 0, 848822976643071, 252, 18446463149025525759, 18446462598732841023, 18446462598732840963, 36028792723996703, 72057594037927928, 10696049115004928, 281474976710648, 2199023190016, 549755813880, 20266198323101840, 2251799813685240, 335544350, 9223389629040558079, 1, 18446464796682337663, 2147483647, 2589004636760940512, 16643063808, 54043195528399871, 655360, 9007199254740991, 15032387456, 281474976710655, 176, 0, 0, 140737488355327, 251658240, 281474976710655, 16, 72066390130950143, 0, 134217727, 127, 0, 0, 17592186044415, 0, 18446744069414584320, 9223372041149743103, 9223653511822045823, 2, 18446740770879700992, 42949804031, 290482175965394945, 18446744073441181696, 18446462599269712895, 144115188075855871, 0, 0, 0, 8589934591, 140737488354815, 18445618173802708993, 65535, 0, 562949953420159, 18446741595513421888, 18446462598749619199, 268435455, 0, 0, 0, 2251795518717952, 4503599627239412, 0, 281474976710656, 0, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 67108863, 0, 18446744073709551615, 140737488355327, 18446744073709551615, 18446744073709551615, 18446744073709551615, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18446744073709486080, 562949953421311, 281474976710655, 18446744069414584446, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 576460752303423487, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1073741823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 144115188075855871, 18446462600880324607, 9223372036854775807, 70368744112128, 281474976710655, 16212958624174047247, 65535, 0, 0, 0, 0, 0, 0, 35184372088831, 0, 0, 0, 18446744073709551615, 18014398505187016704, 1048575, 18446744073709551615, 67583, 4294443008, 34902944356761600, 18446744073709551615, 18446744073709551615, 18446744073709551615, 9223372036858970111, 2147483647, 0, 18446744073709551615, 2251799813685247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8065665457643847680, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 1125934266580991, 18446463629527547904, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 1152921504606846975, 0, 0, 0, 0, 18446744073709551615, 2305570330330005503, 67043839, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18446744073709551615, 18446744073707454463, 17005555242810474495, 18446744073709551599, 8935141660164089791, 18446744073709419615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446743249075830783, 17870283321271910397, 18437736874452713471, 18446603336221163519, 18446741874686295551, 4087, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8660801552383, 0, 0, 0, 18446462598732840960, 70368744177663, 0, 0, 4575692405780512767, 16384, 0, 0, 0, 0, 70368744112128, 17592186044415, 0, 0, 0, 0, 0, 0, 0, 17592185978880, 0, 0, 0, 351843720822784, 0, 0, 0, 13843853836919242751, 0, 0, 0, 9223213153129594880, 18446744073709551615, 18446744073709551615, 18446744073709551615, 31, 18446744073709551615, 2063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 790380184120328175, 6843210385291930244, 1152917029519358975, 0, 0, 0, 0, 0, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 4294967295, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744070488326143, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446532967477018623, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446462607322775551, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 1073741823, 0, 0, 0, 0, 0, 0, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 1073741823, 0, 0, 0, 0, 0, 0, 0, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709488127, 18446744073709551615, 18446744073709551615, 18446744073709551615, 288230376151711743, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; +#[inline] +pub fn xid_start_p(c: char) -> bool { + let cp = c as usize; + let blki = unsafe { *XID_START_L1.get_unchecked(cp >> 10) } as usize; + let in_blk_offset_p = cp & 0x3FF; + let wordi = (blki * 16) + (in_blk_offset_p >> 6); + let biti = in_blk_offset_p & 0x3F; + unsafe { return (*XID_START_L2.get_unchecked(wordi) & (1 << biti)) != 0; } +} -- cgit v1.2.3 From c72d67547813648650dcd0d9dea58ec13a69b432 Mon Sep 17 00:00:00 2001 From: romir kulshrestha Date: Thu, 5 Mar 2026 19:57:14 +0100 Subject: Fetch feature to control if/when generation occurs --- Cargo.lock | 587 +++++++++++++++++++++++++------------------------------ oryxc/Cargo.toml | 17 +- 2 files changed, 268 insertions(+), 336 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c4bd98c..b8e0a51 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -70,13 +70,10 @@ dependencies = [ ] [[package]] -name = "arbitrary" -version = "1.4.2" +name = "anyhow" +version = "1.0.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" -dependencies = [ - "derive_arbitrary", -] +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" [[package]] name = "base64" @@ -112,28 +109,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" [[package]] -name = "byteorder" -version = "1.5.0" +name = "bytes" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" [[package]] name = "bzip2" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49ecfb22d906f800d4fe833b6282cf4dc1c298f5057ca0b5445e5c209735ca47" -dependencies = [ - "bzip2-sys", -] - -[[package]] -name = "bzip2-sys" -version = "0.1.13+1.0.8" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" +checksum = "f3a53fac24f34a81bc9954b5d6cfce0c21e18ec6959f44f56e8e90e4bb7c346c" dependencies = [ - "cc", - "pkg-config", + "libbz2-rs-sys", ] [[package]] @@ -212,9 +199,9 @@ checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "constant_time_eq" -version = "0.3.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" +checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" [[package]] name = "cpufeatures" @@ -225,21 +212,6 @@ dependencies = [ "libc", ] -[[package]] -name = "crc" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" -dependencies = [ - "crc-catalog", -] - -[[package]] -name = "crc-catalog" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" - [[package]] name = "crc32fast" version = "1.5.0" @@ -313,17 +285,6 @@ dependencies = [ "powerfmt", ] -[[package]] -name = "derive_arbitrary" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "digest" version = "0.10.7" @@ -335,17 +296,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "displaydoc" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "equivalent" version = "1.0.2" @@ -372,16 +322,14 @@ checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" dependencies = [ "crc32fast", "miniz_oxide", + "zlib-rs", ] [[package]] -name = "form_urlencoded" -version = "1.2.2" +name = "foldhash" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" -dependencies = [ - "percent-encoding", -] +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" [[package]] name = "generic-array" @@ -409,12 +357,25 @@ name = "getrandom" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi 5.3.0", + "wasip2", +] + +[[package]] +name = "getrandom" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" dependencies = [ "cfg-if", "js-sys", "libc", - "r-efi", + "r-efi 6.0.0", "wasip2", + "wasip3", "wasm-bindgen", ] @@ -424,6 +385,15 @@ version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash", +] + [[package]] name = "hashbrown" version = "0.16.1" @@ -446,106 +416,26 @@ dependencies = [ ] [[package]] -name = "icu_collections" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" -dependencies = [ - "displaydoc", - "potential_utf", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locale_core" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_normalizer" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" -dependencies = [ - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" - -[[package]] -name = "icu_properties" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" -dependencies = [ - "icu_collections", - "icu_locale_core", - "icu_properties_data", - "icu_provider", - "zerotrie", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "2.1.2" +name = "http" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" - -[[package]] -name = "icu_provider" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" dependencies = [ - "displaydoc", - "icu_locale_core", - "writeable", - "yoke", - "zerofrom", - "zerotrie", - "zerovec", + "bytes", + "itoa", ] [[package]] -name = "idna" -version = "1.1.0" +name = "httparse" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] -name = "idna_adapter" -version = "1.2.1" +name = "id-arena" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" -dependencies = [ - "icu_normalizer", - "icu_properties", -] +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" [[package]] name = "indexmap" @@ -555,6 +445,8 @@ checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" dependencies = [ "equivalent", "hashbrown 0.16.1", + "serde", + "serde_core", ] [[package]] @@ -572,6 +464,12 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" +[[package]] +name = "itoa" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" + [[package]] name = "jobserver" version = "0.1.34" @@ -593,16 +491,22 @@ dependencies = [ ] [[package]] -name = "libc" -version = "0.2.182" +name = "leb128fmt" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + +[[package]] +name = "libbz2-rs-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c4a545a15244c7d945065b5d392b2d2d7f21526fba56ce51467b06ed445e8f7" [[package]] -name = "litemap" -version = "0.8.1" +name = "libc" +version = "0.2.182" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" +checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" [[package]] name = "lock_api" @@ -620,24 +524,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] -name = "lzma-rs" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "297e814c836ae64db86b36cf2a557ba54368d03f6afcd7d947c266692f71115e" -dependencies = [ - "byteorder", - "crc", -] - -[[package]] -name = "lzma-sys" -version = "0.1.20" +name = "lzma-rust2" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27" +checksum = "47bb1e988e6fb779cf720ad431242d3f03167c1b3f2b1aae7f1a94b2495b36ae" dependencies = [ - "cc", - "libc", - "pkg-config", + "sha2", ] [[package]] @@ -767,21 +659,28 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" -[[package]] -name = "potential_utf" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" -dependencies = [ - "zerovec", -] - [[package]] name = "powerfmt" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" +[[package]] +name = "ppmd-rust" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efca4c95a19a79d1c98f791f10aebd5c1363b473244630bb7dbde1dc98455a24" + +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn", +] + [[package]] name = "proc-macro2" version = "1.0.106" @@ -806,6 +705,12 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + [[package]] name = "redox_syscall" version = "0.5.18" @@ -876,6 +781,12 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +[[package]] +name = "semver" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" + [[package]] name = "serde" version = "1.0.228" @@ -905,6 +816,19 @@ dependencies = [ "syn", ] +[[package]] +name = "serde_json" +version = "1.0.149" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + [[package]] name = "sha1" version = "0.10.6" @@ -916,6 +840,17 @@ dependencies = [ "digest", ] +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + [[package]] name = "shlex" version = "1.3.0" @@ -960,12 +895,6 @@ dependencies = [ "syn", ] -[[package]] -name = "stable_deref_trait" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" - [[package]] name = "strsim" version = "0.11.1" @@ -989,37 +918,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "synstructure" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "thiserror" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "time" version = "0.3.47" @@ -1027,6 +925,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" dependencies = [ "deranged", + "js-sys", "num-conv", "powerfmt", "serde_core", @@ -1040,14 +939,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" [[package]] -name = "tinystr" -version = "0.8.2" +name = "typed-path" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" -dependencies = [ - "displaydoc", - "zerovec", -] +checksum = "8e28f89b80c87b8fb0cf04ab448d5dd0dd0ade2f8891bae878de66a75a28600e" [[package]] name = "typenum" @@ -1067,6 +962,12 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + [[package]] name = "untrusted" version = "0.9.0" @@ -1075,37 +976,38 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "2.12.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d1a66277ed75f640d608235660df48c8e3c19f3b4edb6a263315626cc3c01d" +checksum = "fdc97a28575b85cfedf2a7e7d3cc64b3e11bd8ac766666318003abbacc7a21fc" dependencies = [ "base64", "flate2", "log", - "once_cell", + "percent-encoding", "rustls", "rustls-pki-types", - "url", - "webpki-roots 0.26.11", + "ureq-proto", + "utf-8", + "webpki-roots", ] [[package]] -name = "url" -version = "2.5.8" +name = "ureq-proto" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +checksum = "d81f9efa9df032be5934a46a068815a10a042b494b6a58cb0a1a97bb5467ed6f" dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", + "base64", + "http", + "httparse", + "log", ] [[package]] -name = "utf8_iter" -version = "1.0.4" +name = "utf-8" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" [[package]] name = "utf8parse" @@ -1134,6 +1036,15 @@ dependencies = [ "wit-bindgen", ] +[[package]] +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" +dependencies = [ + "wit-bindgen", +] + [[package]] name = "wasm-bindgen" version = "0.2.114" @@ -1180,12 +1091,37 @@ dependencies = [ ] [[package]] -name = "webpki-roots" -version = "0.26.11" +name = "wasm-encoder" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" dependencies = [ - "webpki-roots 1.0.6", + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasmparser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags", + "hashbrown 0.15.5", + "indexmap", + "semver", ] [[package]] @@ -1290,64 +1226,87 @@ name = "wit-bindgen" version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] [[package]] -name = "writeable" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" - -[[package]] -name = "xz2" -version = "0.1.7" +name = "wit-bindgen-core" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" dependencies = [ - "lzma-sys", + "anyhow", + "heck", + "wit-parser", ] [[package]] -name = "yoke" -version = "0.8.1" +name = "wit-bindgen-rust" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" dependencies = [ - "stable_deref_trait", - "yoke-derive", - "zerofrom", + "anyhow", + "heck", + "indexmap", + "prettyplease", + "syn", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", ] [[package]] -name = "yoke-derive" -version = "0.8.1" +name = "wit-bindgen-rust-macro" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" dependencies = [ + "anyhow", + "prettyplease", "proc-macro2", "quote", "syn", - "synstructure", + "wit-bindgen-core", + "wit-bindgen-rust", ] [[package]] -name = "zerofrom" -version = "0.1.6" +name = "wit-component" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" dependencies = [ - "zerofrom-derive", + "anyhow", + "bitflags", + "indexmap", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", ] [[package]] -name = "zerofrom-derive" -version = "0.1.6" +name = "wit-parser" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", + "anyhow", + "id-arena", + "indexmap", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", ] [[package]] @@ -1370,69 +1329,45 @@ dependencies = [ "syn", ] -[[package]] -name = "zerotrie" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", -] - -[[package]] -name = "zerovec" -version = "0.11.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "zip" -version = "2.4.2" +version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" +checksum = "b680f2a0cd479b4cff6e1233c483fdead418106eae419dc60200ae9850f6d004" dependencies = [ "aes", - "arbitrary", "bzip2", "constant_time_eq", "crc32fast", - "crossbeam-utils", "deflate64", - "displaydoc", "flate2", - "getrandom 0.3.4", + "getrandom 0.4.2", "hmac", "indexmap", - "lzma-rs", + "lzma-rust2", "memchr", "pbkdf2", + "ppmd-rust", "sha1", - "thiserror", "time", - "xz2", + "typed-path", "zeroize", "zopfli", "zstd", ] +[[package]] +name = "zlib-rs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3be3d40e40a133f9c916ee3f9f4fa2d9d63435b5fbe1bfc6d9dae0aa0ada1513" + +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" + [[package]] name = "zopfli" version = "0.8.3" diff --git a/oryxc/Cargo.toml b/oryxc/Cargo.toml index 9b13471..62936a0 100644 --- a/oryxc/Cargo.toml +++ b/oryxc/Cargo.toml @@ -1,23 +1,20 @@ [package] -name = "oryx" +name = "oryx" version = "0.1.0" edition = "2024" [dependencies] boxcar = "0.2.14" -clap = { version = "4", features = ["derive"] } +clap = { version = "4", features = ["derive"] } crossbeam-deque = "0.8.6" dashmap = "6.1.0" -phf = { version = "0.13.1", features = ["macros"] } -soa-rs = "0.9.1" -unicode-width = "0.2.2" - -# num-rational = "0.4.2" -# icu = { version = "2.1.1", features = ["compiled_data"] } +phf = { version = "0.13.1", features = ["macros"] } +soa-rs = "0.9.1" +unicode-width = "0.2.2" [features] fetch = ["dep:ureq", "dep:zip"] [build-dependencies] -ureq = { version = "2", optional = true } -zip = { version = "2", optional = true } +ureq = { version = "3.2.0", optional = true } +zip = { version = "8.2.0", optional = true } -- cgit v1.2.3 From 5df9a24dbfa69884ac473c1e6c15187371362980 Mon Sep 17 00:00:00 2001 From: romir kulshrestha Date: Fri, 6 Mar 2026 12:29:06 +0100 Subject: Add unicode-normalization to deps --- Cargo.lock | 27 ++++++++++++++++++++++++++- oryxc/Cargo.toml | 3 ++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b8e0a51..9c206b2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -567,7 +567,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] -name = "oryx" +name = "oryxc" version = "0.1.0" dependencies = [ "boxcar", @@ -576,6 +576,7 @@ dependencies = [ "dashmap", "phf", "soa-rs", + "unicode-normalization", "unicode-width", "ureq", "zip", @@ -938,6 +939,21 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" +[[package]] +name = "tinyvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + [[package]] name = "typed-path" version = "0.12.3" @@ -956,6 +972,15 @@ version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" +[[package]] +name = "unicode-normalization" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" +dependencies = [ + "tinyvec", +] + [[package]] name = "unicode-width" version = "0.2.2" diff --git a/oryxc/Cargo.toml b/oryxc/Cargo.toml index 62936a0..4230086 100644 --- a/oryxc/Cargo.toml +++ b/oryxc/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "oryx" +name = "oryxc" version = "0.1.0" edition = "2024" @@ -10,6 +10,7 @@ crossbeam-deque = "0.8.6" dashmap = "6.1.0" phf = { version = "0.13.1", features = ["macros"] } soa-rs = "0.9.1" +unicode-normalization = "0.1.25" unicode-width = "0.2.2" [features] -- cgit v1.2.3 From 301ee908e1409c6d42e85c9431d01a92be676753 Mon Sep 17 00:00:00 2001 From: Romir K Date: Tue, 10 Mar 2026 21:20:50 +0100 Subject: Delete run.zsh --- run.zsh | 21 --------------------- 1 file changed, 21 deletions(-) delete mode 100755 run.zsh diff --git a/run.zsh b/run.zsh deleted file mode 100755 index be3704c..0000000 --- a/run.zsh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash -set -uo pipefail - -BINARY=./target/debug/oryx -COUNT=${COUNT:-100} - -success=0 -fail=0 - -for ((i=1; i<=COUNT; i++)); do - printf '%3d: ' "$i" - if "$BINARY" "$@"; then - echo success - ((success++)) - else - echo fail - ((fail++)) - fi -done - -echo "Done: $success succeeded, $fail failed" \ No newline at end of file -- cgit v1.2.3