diff --git a/Cargo.lock b/Cargo.lock index 644fa38..0ea6abd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13,52 +13,42 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.18" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +checksum = "342258dd14006105c2b75ab1bd7543a03bdf0cfc94383303ac212a04939dff6f" dependencies = [ "anstyle", "anstyle-parse", - "anstyle-query", "anstyle-wincon", - "colorchoice", - "is_terminal_polyfill", + "concolor-override", + "concolor-query", + "is-terminal", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.10" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" +checksum = "23ea9e81bd02e310c216d080f6223c179012256e5151c41db88d12c88a1684d2" [[package]] name = "anstyle-parse" -version = "0.2.6" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +checksum = "a7d1bb534e9efed14f3e5f44e7dd1a4f709384023a4165199a4241e18dff0116" dependencies = [ "utf8parse", ] -[[package]] -name = "anstyle-query" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" -dependencies = [ - "windows-sys", -] - [[package]] name = "anstyle-wincon" -version = "3.0.7" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" +checksum = "c3127af6145b149f3287bb9a0d10ad9c5692dba8c53ad48285e5bec4063834fa" dependencies = [ "anstyle", - "once_cell", - "windows-sys", + "windows-sys 0.45.0", ] [[package]] @@ -67,6 +57,12 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + [[package]] name = "bumpalo" version = "3.17.0" @@ -81,33 +77,35 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "clap" -version = "4.5.37" +version = "4.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eccb054f56cbd38340b380d4a8e69ef1f02f1af43db2f0cc817a4774d80ae071" +checksum = "046ae530c528f252094e4a77886ee1374437744b2bff1497aa898bbddbbb29b3" dependencies = [ "clap_builder", "clap_derive", + "once_cell", ] [[package]] name = "clap_builder" -version = "4.5.37" +version = "4.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd9466fac8543255d3b1fcad4762c5e116ffe808c8a3043d4263cd4fd4862a2" +checksum = "223163f58c9a40c3b0a43e1c4b50a9ce09f007ea2cb1ec258a687945b4b7929f" dependencies = [ "anstream", "anstyle", + "bitflags", "clap_lex", "strsim", ] [[package]] name = "clap_derive" -version = "4.5.32" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" +checksum = "3f9644cd56d6b87dbe899ef8b053e331c0637664e9e21a33dfcdc36093f5c5c4" dependencies = [ - "heck", + "heck 0.4.1", "proc-macro2", "quote", "syn", @@ -115,9 +113,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.4" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" +checksum = "8a2dd5a6fe8c6e3502f568a6353e5273bbb15193ad9a89e457b9970798efbea1" [[package]] name = "colorchoice" @@ -125,21 +123,6 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" -[[package]] -name = "compiler" -version = "2.0.0-alpha.1" -dependencies = [ - "clap", - "comptime", - "heck", - "regex-automata", - "serde", - "serde-wasm-bindgen", - "serde_json", - "thiserror", - "wasm-bindgen", -] - [[package]] name = "comptime" version = "0.1.0" @@ -151,12 +134,42 @@ dependencies = [ "num-traits", ] +[[package]] +name = "concolor-override" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40a4925288e39d5923e024781971aab940995fa31bab3ffceebbadfc87591e90" +dependencies = [ + "colorchoice", +] + +[[package]] +name = "concolor-query" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d11d52c3d7ca2e6d0040212be9e4dbbcd78b6447f535b6b561f449427944cf" +dependencies = [ + "windows-sys 0.45.0", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +[[package]] +name = "hermit-abi" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbd780fe5cc30f81464441920d82ac8740e2e46b29a6fad543ddd075229ce37e" + [[package]] name = "hex" version = "0.4.3" @@ -164,10 +177,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] -name = "is_terminal_polyfill" -version = "1.70.1" +name = "is-terminal" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" +dependencies = [ + "hermit-abi", + "libc", + "windows-sys 0.59.0", +] [[package]] name = "itoa" @@ -191,6 +209,12 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +[[package]] +name = "libc" +version = "0.2.172" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" + [[package]] name = "log" version = "0.4.27" @@ -257,9 +281,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.9" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ "aho-corasick", "memchr", @@ -329,15 +353,15 @@ dependencies = [ [[package]] name = "strsim" -version = "0.11.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "syn" -version = "2.0.100" +version = "2.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" +checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" dependencies = [ "proc-macro2", "quote", @@ -434,13 +458,37 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + [[package]] name = "windows-sys" version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" dependencies = [ - "windows-targets", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", ] [[package]] @@ -449,28 +497,46 @@ 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_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + [[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.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + [[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.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -483,26 +549,65 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + [[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.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + [[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.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + [[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.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + [[package]] name = "windows_x86_64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "zk-regex-compiler" +version = "2.0.0-alpha.2" +dependencies = [ + "clap", + "comptime", + "heck 0.5.0", + "regex-automata", + "serde", + "serde-wasm-bindgen", + "serde_json", + "thiserror", + "wasm-bindgen", +] diff --git a/compiler/Cargo.toml b/compiler/Cargo.toml index 9c6e742..ae178e9 100644 --- a/compiler/Cargo.toml +++ b/compiler/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zk-regex-compiler" -version = "2.0.0-alpha.1" +version = "2.0.0-alpha.2" edition = { workspace = true } [[bin]] diff --git a/compiler/package.json b/compiler/package.json index a94394a..9520ed3 100644 --- a/compiler/package.json +++ b/compiler/package.json @@ -1,6 +1,6 @@ { "name": "@zk-email/zk-regex-compiler", - "version": "2.0.0-alpha.1", + "version": "2.0.0-alpha.2", "description": "A compiler to generate a regex verification circuit in circom from a user-defined regex. Please check [zk-regex](https://github.com/zkemail/zk-regex/tree/main) for the detail.", "repository": { "type": "git", @@ -10,13 +10,14 @@ "build": "cargo build && cargo install --path . && wasm-pack build --target nodejs --out-dir ./pkg/", "build-debug": "npm run build --", "build-release": "npm run build -- --release", - "build-web": "cargo build && cargo install --path . && wasm-pack build --target web --out-dir ./pkg-web/", + "build-web": "cargo build && wasm-pack build --target web --out-dir ./pkg-web/", "build-web-release": "npm run build-web -- --release", "install": "npm run build-release", "install-debug": "npm run build-debug", "test": "cargo test && wasm-pack test --node", "upload-binary": "wasm-pack publish -t nodejs", - "upload-binary-web": "wasm-pack publish -t web --out-dir ./pkg-web/" + "upload-binary-web": "wasm-pack publish -t web --out-dir ./pkg-web/", + "upload-binary-web-nightly": "npm run build-web-release && wasm-pack publish-nightly -t web --out-dir ./pkg-web/" }, "license": "MIT" } diff --git a/compiler/src/bin/zk-regex.rs b/compiler/src/bin/zk-regex.rs index 2a80dc8..edc9a0e 100644 --- a/compiler/src/bin/zk-regex.rs +++ b/compiler/src/bin/zk-regex.rs @@ -1,9 +1,9 @@ use clap::{Parser, Subcommand}; -use compiler::{ +use std::{fs::File, path::PathBuf, str::FromStr}; +use zk_regex_compiler::{ DecomposedRegexConfig, NFAGraph, ProvingFramework, gen_from_decomposed, gen_from_raw, generate_circuit_inputs, save_outputs, validate_cli_template_name, }; -use std::{fs::File, path::PathBuf, str::FromStr}; #[derive(Parser)] #[command(about = "ZK Regex Compiler CLI")] diff --git a/compiler/src/wasm.rs b/compiler/src/wasm.rs index 429a188..041a92d 100644 --- a/compiler/src/wasm.rs +++ b/compiler/src/wasm.rs @@ -60,6 +60,7 @@ impl From<&str> for Haystack { /// Generate circuit from decomposed regex configuration #[wasm_bindgen] #[allow(non_snake_case)] +#[cfg(target_arch = "wasm32")] pub fn genFromDecomposed( decomposedRegexJson: &str, templateName: &str, @@ -97,6 +98,7 @@ fn generate_from_decomposed_internal( /// Generate circuit from raw regex string #[wasm_bindgen] #[allow(non_snake_case)] +#[cfg(target_arch = "wasm32")] pub fn genFromRaw( rawRegex: &str, maxSubstringBytes: Option>, @@ -146,6 +148,7 @@ fn generate_from_raw_internal( /// Generate circuit inputs for a regex match #[wasm_bindgen] #[allow(non_snake_case)] +#[cfg(target_arch = "wasm32")] pub fn genCircuitInputs( regexGraphJson: &str, haystack: &str, @@ -188,18 +191,3 @@ fn generate_circuit_inputs_internal( serde_json::to_string(&inputs).map_err(|e| WasmError::SerializationError(e.to_string())) } - -/// Pad a string to the specified length with null bytes -#[wasm_bindgen] -#[allow(non_snake_case)] -pub fn padString(input: &str, maxLength: usize) -> Vec { - let mut bytes = input.as_bytes().to_vec(); - - if bytes.len() > maxLength { - bytes.truncate(maxLength); - } else { - bytes.resize(maxLength, 0); - } - - bytes -} diff --git a/compiler/yarn.lock b/compiler/yarn.lock new file mode 100644 index 0000000..eecd35d --- /dev/null +++ b/compiler/yarn.lock @@ -0,0 +1,11 @@ +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 6 + +"@zk-email/zk-regex-compiler@workspace:.": + version: 0.0.0-use.local + resolution: "@zk-email/zk-regex-compiler@workspace:." + languageName: unknown + linkType: soft