diff --git a/__wasm/wit-bindgen-sample/container/src/main.rs b/__wasm/wit-bindgen-sample/container/src/main.rs
index a5c4ce1..660e317 100644
--- a/__wasm/wit-bindgen-sample/container/src/main.rs
+++ b/__wasm/wit-bindgen-sample/container/src/main.rs
@@ -10,7 +10,10 @@ pub struct MyContainer;
impl Container for MyContainer {
fn fetch(&mut self, s: &str) -> String {
- format!("FETCHED: {}", s)
+ // format!("FETCHED: {}", s)
+ let r = "{\"result\":\"{}\"}".into();
+ println!(">>>> {}", r);
+ r
}
}
@@ -25,9 +28,12 @@ fn main() -> Result<()> {
|linker| container::add_to_linker(linker, |cx| -> &mut MyContainer { &mut cx.imports }),
|store, module, linker| Exports::instantiate(store, module, linker, |cx| &mut cx.exports),
)?;
- let a = exports.eval_javascript(&mut store, "[script]");
+ let a = exports.eval_javascript(&mut store, "let a = [];fetch('aaa')");
- println!("Hello, world! {:?}", a);
+ match a {
+ Ok(a) => println!("Hello, world! {:?}", a),
+ Err(e) => println!("ERROR: {}", e),
+ }
Ok(())
}
diff --git a/__wasm/wit-bindgen-sample/engine/Cargo.lock b/__wasm/wit-bindgen-sample/engine/Cargo.lock
index 85749f0..06d36a6 100644
--- a/__wasm/wit-bindgen-sample/engine/Cargo.lock
+++ b/__wasm/wit-bindgen-sample/engine/Cargo.lock
@@ -19,20 +19,152 @@ dependencies = [
"syn",
]
+[[package]]
+name = "autocfg"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+
[[package]]
name = "bitflags"
version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+[[package]]
+name = "boa_engine"
+version = "0.15.0"
+dependencies = [
+ "bitflags",
+ "boa_gc",
+ "boa_interner",
+ "boa_profiler",
+ "boa_unicode",
+ "chrono",
+ "dyn-clone",
+ "fast-float",
+ "gc",
+ "indexmap",
+ "num-bigint",
+ "num-integer",
+ "num-traits",
+ "once_cell",
+ "rand",
+ "regress",
+ "rustc-hash",
+ "ryu-js",
+ "serde",
+ "serde_json",
+ "tap",
+ "unicode-normalization",
+]
+
+[[package]]
+name = "boa_gc"
+version = "0.15.0"
+dependencies = [
+ "gc",
+]
+
+[[package]]
+name = "boa_interner"
+version = "0.15.0"
+dependencies = [
+ "phf",
+ "rustc-hash",
+ "static_assertions",
+]
+
+[[package]]
+name = "boa_profiler"
+version = "0.15.0"
+
+[[package]]
+name = "boa_unicode"
+version = "0.15.0"
+dependencies = [
+ "unicode-general-category",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "chrono"
+version = "0.4.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73"
+dependencies = [
+ "libc",
+ "num-integer",
+ "num-traits",
+ "time",
+ "winapi",
+]
+
+[[package]]
+name = "dyn-clone"
+version = "1.0.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d07a982d1fb29db01e5a59b1918e03da4df7297eaeee7686ac45542fd4e59c8"
+
[[package]]
name = "engine"
version = "0.1.0"
dependencies = [
+ "boa_engine",
+ "getrandom",
+ "serde",
+ "serde_json",
"wit-bindgen-gen-core",
"wit-bindgen-rust",
]
+[[package]]
+name = "fast-float"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95765f67b4b18863968b4a1bd5bb576f732b29a4a28c7cd84c09fa3e2875f33c"
+
+[[package]]
+name = "gc"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3edaac0f5832202ebc99520cb77c932248010c4645d20be1dc62d6579f5b3752"
+dependencies = [
+ "gc_derive",
+]
+
+[[package]]
+name = "gc_derive"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60df8444f094ff7885631d80e78eb7d88c3c2361a98daaabb06256e4500db941"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.7"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi 0.11.0+wasi-snapshot-preview1",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.12.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "607c8a29735385251a339424dd462993c0fed8fa09d378f259377df08c126022"
+
[[package]]
name = "heck"
version = "0.3.3"
@@ -48,12 +180,127 @@ version = "2.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005"
+[[package]]
+name = "indexmap"
+version = "1.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e"
+dependencies = [
+ "autocfg",
+ "hashbrown",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d"
+
+[[package]]
+name = "libc"
+version = "0.2.126"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836"
+
[[package]]
name = "memchr"
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+[[package]]
+name = "num-bigint"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f"
+dependencies = [
+ "autocfg",
+ "num-integer",
+ "num-traits",
+ "serde",
+]
+
+[[package]]
+name = "num-integer"
+version = "0.1.45"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
+dependencies = [
+ "autocfg",
+ "num-traits",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1"
+
+[[package]]
+name = "phf"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259"
+dependencies = [
+ "phf_macros",
+ "phf_shared",
+ "proc-macro-hack",
+]
+
+[[package]]
+name = "phf_generator"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6"
+dependencies = [
+ "phf_shared",
+ "rand",
+]
+
+[[package]]
+name = "phf_macros"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0"
+dependencies = [
+ "phf_generator",
+ "phf_shared",
+ "proc-macro-hack",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "phf_shared"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096"
+dependencies = [
+ "siphasher",
+]
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872"
+
+[[package]]
+name = "proc-macro-hack"
+version = "0.5.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"
+
[[package]]
name = "proc-macro2"
version = "1.0.40"
@@ -83,6 +330,106 @@ dependencies = [
"proc-macro2",
]
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
+dependencies = [
+ "getrandom",
+]
+
+[[package]]
+name = "regress"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0a92ff21fe8026ce3f2627faaf43606f0b67b014dbc9ccf027181a804f75d92e"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "rustc-hash"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
+
+[[package]]
+name = "ryu"
+version = "1.0.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695"
+
+[[package]]
+name = "ryu-js"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6518fc26bced4d53678a22d6e423e9d8716377def84545fe328236e3af070e7f"
+
+[[package]]
+name = "serde"
+version = "1.0.139"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0171ebb889e45aa68b44aee0859b3eede84c6f5f5c228e6f140c0b2a0a46cad6"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.139"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc1d3230c1de7932af58ad8ffbe1d784bd55efd5a9d84ac24f69c72d83543dfb"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.82"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82c2c1fdcd807d1098552c5b9a36e425e42e9fbd7c6a37a8425f390f781f7fa7"
+dependencies = [
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "siphasher"
+version = "0.3.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de"
+
+[[package]]
+name = "static_assertions"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+
[[package]]
name = "syn"
version = "1.0.98"
@@ -94,6 +441,35 @@ dependencies = [
"unicode-ident",
]
+[[package]]
+name = "synstructure"
+version = "0.12.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "unicode-xid",
+]
+
+[[package]]
+name = "tap"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369"
+
+[[package]]
+name = "time"
+version = "0.1.44"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255"
+dependencies = [
+ "libc",
+ "wasi 0.10.0+wasi-snapshot-preview1",
+ "winapi",
+]
+
[[package]]
name = "tinyvec"
version = "1.6.0"
@@ -118,6 +494,12 @@ dependencies = [
"version_check",
]
+[[package]]
+name = "unicode-general-category"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1218098468b8085b19a2824104c70d976491d247ce194bbd9dc77181150cdfd6"
+
[[package]]
name = "unicode-ident"
version = "1.0.2"
@@ -151,6 +533,40 @@ version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+[[package]]
+name = "wasi"
+version = "0.10.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f"
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
[[package]]
name = "wit-bindgen-gen-core"
version = "0.1.0"
diff --git a/__wasm/wit-bindgen-sample/engine/Cargo.toml b/__wasm/wit-bindgen-sample/engine/Cargo.toml
index 8ef5aa8..1447308 100644
--- a/__wasm/wit-bindgen-sample/engine/Cargo.toml
+++ b/__wasm/wit-bindgen-sample/engine/Cargo.toml
@@ -8,6 +8,20 @@ edition = "2021"
[lib]
crate-type = ['cdylib']
+[profile.release]
+codegen-units = 1
+incremental = true
+lto = true
+opt-level = "z"
+
[dependencies]
wit-bindgen-gen-core = { path = '../wit-bindgen/crates/gen-core' }
wit-bindgen-rust = { path = '../wit-bindgen/crates/rust-wasm' }
+boa_engine = "0.15.0"
+getrandom = { version = "0.2", features = ["js"] }
+serde = { version = "1.0", features = ["derive"] }
+serde_json = "1.0"
+
+[patch.crates-io]
+getrandom = { path = "./getrandom" }
+boa_engine = { path = "./boa/boa_engine" }
\ No newline at end of file
diff --git a/__wasm/wit-bindgen-sample/engine/boa/.editorconfig b/__wasm/wit-bindgen-sample/engine/boa/.editorconfig
new file mode 100644
index 0000000..4e2d43c
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/.editorconfig
@@ -0,0 +1,11 @@
+root = true
+
+[{Makefile,**.mk}]
+# Use tabs for indentation (Makefiles require tabs)
+indent_style = tab
+
+[*]
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
diff --git a/__wasm/wit-bindgen-sample/engine/boa/.gitattributes b/__wasm/wit-bindgen-sample/engine/boa/.gitattributes
new file mode 100644
index 0000000..951b3ca
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/.gitattributes
@@ -0,0 +1,30 @@
+# Handle line endings automatically for files detected as text
+# and leave all files detected as binary untouched.
+* text=auto
+
+#
+# The above will handle all files NOT found below
+#
+# These files are text and should be normalized (Convert crlf => lf)
+*.css eol=lf
+*.htm eol=lf
+*.html eol=lf
+*.js eol=lf
+*.json eol=lf
+*.sh eol=lf
+*.txt eol=lf
+*.yml eol=lf
+*.rs eol=lf
+*.toml eol=lf
+*.lock eol=lf
+*.md eol=lf
+*.svg eol=lf
+
+# These files are binary and should be left untouched
+# (binary is a macro for -text -diff)
+*.gif binary
+*.ico binary
+*.jar binary
+*.jpg binary
+*.jpeg binary
+*.png binary
diff --git a/__wasm/wit-bindgen-sample/engine/boa/.github/FUNDING.yml b/__wasm/wit-bindgen-sample/engine/boa/.github/FUNDING.yml
new file mode 100644
index 0000000..1cb1d55
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/.github/FUNDING.yml
@@ -0,0 +1 @@
+open_collective: boa
diff --git a/__wasm/wit-bindgen-sample/engine/boa/.github/ISSUE_TEMPLATE/bug_report.md b/__wasm/wit-bindgen-sample/engine/boa/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 0000000..6e24984
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,52 @@
+---
+name: "\U0001F41B Bug report"
+about: Create a report to help us improve
+title: ""
+labels: bug
+assignees: ""
+---
+
+
+
+**Describe the bug**
+A clear and concise description of what the bug is.
+
+
+
+**To Reproduce**
+Steps to reproduce the issue, or JavaScript code that causes this failure.
+
+
+
+**Expected behavior**
+Explain what you expected to happen, and what is happening instead.
+
+
+
+**Build environment (please complete the following information):**
+
+- OS: [e.g. Fedora Linux]
+- Version: [e.g. 32]
+- Target triple: [e.g. x86_64-unknown-linux-gnu]
+- Rustc version: [e.g. rustc 1.43.0 (4fb7144ed 2020-04-20), running `rustc -V`]
+
+**Additional context**
+Add any other context about the problem here.
+
+
diff --git a/__wasm/wit-bindgen-sample/engine/boa/.github/ISSUE_TEMPLATE/config.yml b/__wasm/wit-bindgen-sample/engine/boa/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 0000000..d1962be
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,5 @@
+blank_issues_enabled: false
+contact_links:
+ - name: Discord channel
+ url: https://discord.gg/tUFFk9Y
+ about: Please ask and answer questions here.
diff --git a/__wasm/wit-bindgen-sample/engine/boa/.github/ISSUE_TEMPLATE/custom.md b/__wasm/wit-bindgen-sample/engine/boa/.github/ISSUE_TEMPLATE/custom.md
new file mode 100644
index 0000000..56ac092
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/.github/ISSUE_TEMPLATE/custom.md
@@ -0,0 +1,13 @@
+---
+name: Custom
+about: Open an issue in the repo that is neither a bug or a feature, such a new idea
+title: ""
+labels: ""
+assignees: ""
+---
+
+
+
+E.g.: I think we should improve the way the JavaScript interpreter works by...
diff --git a/__wasm/wit-bindgen-sample/engine/boa/.github/ISSUE_TEMPLATE/feature_request.md b/__wasm/wit-bindgen-sample/engine/boa/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 0000000..7687b7b
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,43 @@
+---
+name: "\U0001F680 Feature request"
+about: Suggest a new ECMAScript feature to be implemented, or a new capability of the engine.
+title: ""
+labels: enhancement
+assignees: ""
+---
+
+
+
+**ECMASCript feature**
+Explain the ECMAScript feature that you'd like to see implemented.
+
+
+
+**Example code**
+Give a code example that should work after the implementation of this feature.
+
+
diff --git a/__wasm/wit-bindgen-sample/engine/boa/.github/PULL_REQUEST_TEMPLATE.md b/__wasm/wit-bindgen-sample/engine/boa/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000..333605a
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,12 @@
+
+
+This Pull Request fixes/closes #{issue_num}.
+
+It changes the following:
+
+-
+-
+-
diff --git a/__wasm/wit-bindgen-sample/engine/boa/.github/codecov.yml b/__wasm/wit-bindgen-sample/engine/boa/.github/codecov.yml
new file mode 100644
index 0000000..e377752
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/.github/codecov.yml
@@ -0,0 +1,10 @@
+github_checks:
+ annotations: false
+
+coverage:
+ status:
+ project:
+ default:
+ threshold: 5% # allow 5% coverage variance
+
+ patch: off
diff --git a/__wasm/wit-bindgen-sample/engine/boa/.github/dependabot.yml b/__wasm/wit-bindgen-sample/engine/boa/.github/dependabot.yml
new file mode 100644
index 0000000..9397dd8
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/.github/dependabot.yml
@@ -0,0 +1,50 @@
+version: 2
+updates:
+ - package-ecosystem: npm
+ directory: /
+ schedule:
+ interval: daily
+ - package-ecosystem: github-actions
+ directory: /
+ schedule:
+ interval: daily
+ - package-ecosystem: cargo
+ directory: /
+ schedule:
+ interval: daily
+ - package-ecosystem: cargo
+ directory: /boa_cli/
+ schedule:
+ interval: daily
+ - package-ecosystem: cargo
+ directory: /boa_engine/
+ schedule:
+ interval: daily
+ - package-ecosystem: cargo
+ directory: /boa_gc/
+ schedule:
+ interval: daily
+ - package-ecosystem: cargo
+ directory: /boa_interner/
+ schedule:
+ interval: daily
+ - package-ecosystem: cargo
+ directory: /boa_profiler/
+ schedule:
+ interval: daily
+ - package-ecosystem: cargo
+ directory: /boa_tester/
+ schedule:
+ interval: daily
+ - package-ecosystem: cargo
+ directory: /boa_unicode/
+ schedule:
+ interval: daily
+ - package-ecosystem: cargo
+ directory: /boa_wasm/
+ schedule:
+ interval: daily
+ - package-ecosystem: gitsubmodule
+ directory: /
+ schedule:
+ interval: weekly
diff --git a/__wasm/wit-bindgen-sample/engine/boa/.github/release.yml b/__wasm/wit-bindgen-sample/engine/boa/.github/release.yml
new file mode 100644
index 0000000..20e969d
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/.github/release.yml
@@ -0,0 +1,16 @@
+# .github/release.yml
+
+changelog:
+ exclude:
+ authors:
+ - dependabot
+ categories:
+ - title: Feature Enhancements
+ labels:
+ - enhancement
+ - title: Bug Fixes
+ labels:
+ - bug
+ - title: Internal Improvements
+ labels:
+ - Internal
diff --git a/__wasm/wit-bindgen-sample/engine/boa/.github/workflows/bors.yml b/__wasm/wit-bindgen-sample/engine/boa/.github/workflows/bors.yml
new file mode 100644
index 0000000..af37852
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/.github/workflows/bors.yml
@@ -0,0 +1,162 @@
+name: bors
+
+on:
+ push:
+ branches:
+ - staging
+ - trying
+
+jobs:
+ test_on_linux:
+ name: Tests on Linux
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions-rs/toolchain@v1.0.7
+ with:
+ toolchain: stable
+ override: true
+ profile: minimal
+ - name: Cache cargo
+ uses: actions/cache@v3
+ with:
+ path: |
+ target
+ ~/.cargo/git
+ ~/.cargo/registry
+ key: ${{ runner.os }}-cargo-test-${{ hashFiles('**/Cargo.lock') }}
+ - uses: actions-rs/cargo@v1
+ with:
+ command: test
+ args: -v
+
+ test_on_windows:
+ name: Tests on Windows
+ runs-on: windows-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions-rs/toolchain@v1.0.7
+ with:
+ toolchain: stable
+ override: true
+ profile: minimal
+ - name: Cache cargo
+ uses: actions/cache@v3
+ with:
+ path: |
+ target
+ ~/.cargo/git
+ ~/.cargo/registry
+ key: ${{ runner.os }}-cargo-test-${{ hashFiles('**/Cargo.lock') }}
+ - uses: actions-rs/cargo@v1
+ with:
+ command: test
+ args: -v
+
+ test_on_macos:
+ name: Tests on MacOS
+ runs-on: macos-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions-rs/toolchain@v1.0.7
+ with:
+ toolchain: stable
+ override: true
+ profile: minimal
+ - uses: actions-rs/cargo@v1
+ with:
+ command: test
+ args: -v
+
+ fmt:
+ name: Rustfmt
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions-rs/toolchain@v1.0.7
+ with:
+ toolchain: stable
+ override: true
+ profile: minimal
+ components: rustfmt
+ - uses: actions-rs/cargo@v1
+ with:
+ command: fmt
+ args: --all -- --check
+
+ clippy:
+ name: Clippy
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions-rs/toolchain@v1.0.7
+ with:
+ toolchain: stable
+ override: true
+ profile: minimal
+ components: clippy
+ - name: Cache cargo
+ uses: actions/cache@v3
+ with:
+ path: |
+ target
+ ~/.cargo/git
+ ~/.cargo/registry
+ key: ${{ runner.os }}-cargo-clippy-${{ hashFiles('**/Cargo.lock') }}
+ - uses: actions-rs/cargo@v1
+ with:
+ command: clippy
+ args: -- --verbose
+
+ examples:
+ name: Examples
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions-rs/toolchain@v1.0.7
+ with:
+ toolchain: stable
+ override: true
+ profile: minimal
+ - name: Cache cargo
+ uses: actions/cache@v3
+ with:
+ path: |
+ target
+ ~/.cargo/git
+ ~/.cargo/registry
+ key: ${{ runner.os }}-cargo-examples-${{ hashFiles('**/Cargo.lock') }}
+ - run: cd boa_examples
+ - name: Build examples
+ uses: actions-rs/cargo@v1
+ with:
+ command: build
+ - name: Run example classes
+ uses: actions-rs/cargo@v1
+ with:
+ command: run
+ args: --bin classes
+
+ doc:
+ name: Documentation
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions-rs/toolchain@v1.0.7
+ with:
+ toolchain: stable
+ override: true
+ profile: minimal
+ - name: Cache cargo
+ uses: actions/cache@v3
+ with:
+ path: |
+ target
+ ~/.cargo/git
+ ~/.cargo/registry
+ key: ${{ runner.os }}-cargo-doc-${{ hashFiles('**/Cargo.lock') }}
+ - name: Generate documentation
+ uses: actions-rs/cargo@v1
+ with:
+ command: doc
+ args: -v --document-private-items --all-features
diff --git a/__wasm/wit-bindgen-sample/engine/boa/.github/workflows/master.yml b/__wasm/wit-bindgen-sample/engine/boa/.github/workflows/master.yml
new file mode 100644
index 0000000..f1b4dd5
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/.github/workflows/master.yml
@@ -0,0 +1,54 @@
+name: Main workflows
+on:
+ push:
+ branches:
+ - main
+
+jobs:
+ benchmark:
+ if: ${{ github.actor != 'dependabot[bot]' }}
+ name: Upload docs and run benchmarks
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions-rs/toolchain@v1.0.7
+ with:
+ toolchain: stable
+ override: true
+ profile: minimal
+ - name: Cache cargo
+ uses: actions/cache@v3
+ with:
+ path: |
+ target
+ !target/doc_upload
+ ~/.cargo/git
+ ~/.cargo/registry
+ key: ${{ runner.os }}-cargo-doc-bench-${{ hashFiles('**/Cargo.lock') }}
+ - name: Generate documentation
+ uses: actions-rs/cargo@v1
+ with:
+ command: doc
+ args: -v --document-private-items --all-features
+ - run: echo "" > target/doc/index.html
+ - run: |
+ if [ -d target/doc_upload ]; then rm -rf target/doc_upload; fi
+ mkdir target/doc_upload && mv target/doc target/doc_upload/doc
+ - name: Upload documentation
+ uses: crazy-max/ghaction-github-pages@v3.0.0
+ with:
+ target_branch: gh-pages
+ keep_history: true
+ build_dir: target/doc_upload
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ - name: Run benchmark
+ run: cargo bench -p boa_engine -- --output-format bencher | tee output.txt
+ - name: Store benchmark result
+ uses: benchmark-action/github-action-benchmark@v1.14.0
+ with:
+ name: Boa Benchmarks
+ tool: "cargo"
+ output-file-path: output.txt
+ auto-push: true
+ github-token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/__wasm/wit-bindgen-sample/engine/boa/.github/workflows/pull_request.yml b/__wasm/wit-bindgen-sample/engine/boa/.github/workflows/pull_request.yml
new file mode 100644
index 0000000..2f008df
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/.github/workflows/pull_request.yml
@@ -0,0 +1,34 @@
+name: Benchmarks
+
+on:
+ pull_request:
+ branches:
+ - main
+
+jobs:
+ runBenchmark:
+ if: contains(github.event.pull_request.labels.*.name, 'run-benchmark')
+ name: run benchmark
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ with:
+ fetch-depth: 0
+ - uses: actions-rs/toolchain@v1.0.7
+ with:
+ toolchain: stable
+ override: true
+ profile: minimal
+ - name: Cache cargo
+ uses: actions/cache@v3
+ with:
+ path: |
+ target
+ ~/.cargo/git
+ ~/.cargo/registry
+ key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
+ - uses: boa-dev/criterion-compare-action@v3.2.2
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ branchName: ${{ github.base_ref }}
+ cwd: ./boa_engine
diff --git a/__wasm/wit-bindgen-sample/engine/boa/.github/workflows/release.yml b/__wasm/wit-bindgen-sample/engine/boa/.github/workflows/release.yml
new file mode 100644
index 0000000..bf19966
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/.github/workflows/release.yml
@@ -0,0 +1,62 @@
+name: Publish Release
+on:
+ release:
+ types: [published]
+
+jobs:
+ publish:
+ name: publish
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+
+ - name: Install Rust toolchain
+ uses: actions-rs/toolchain@v1
+ with:
+ toolchain: stable
+ profile: minimal
+ override: true
+
+ - name: Install cargo-workspaces
+ uses: actions-rs/install@v0.1
+ with:
+ crate: cargo-workspaces
+
+ - name: Release
+ env:
+ CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
+ PATCH: ${{ github.run_number }}
+ shell: bash
+ run: |
+ git config --global user.email "runner@gha.local"
+ git config --global user.name "Github Action"
+ cargo workspaces publish --from-git --yes minor
+ doc-publish:
+ # needs: publish
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - name: Install wasm-pack
+ run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
+ - uses: actions/setup-node@v3
+ with:
+ node-version: "16"
+ - run: npm ci
+ - name: Cache npm build
+ uses: actions/cache@v3
+ with:
+ path: |
+ node_modules
+ target
+ boa_wasm/pkg
+ ~/.cargo/git
+ ~/.cargo/registry
+ key: ${{ runner.os }}-npm-build-target-${{ hashFiles('**/package-lock.json') }}
+ - run: npm run build:prod
+ - name: Deploy
+ uses: peaceiris/actions-gh-pages@v3
+ with:
+ publish_dir: ./dist
+ destination_dir: playground
+ github_token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/__wasm/wit-bindgen-sample/engine/boa/.github/workflows/rust.yml b/__wasm/wit-bindgen-sample/engine/boa/.github/workflows/rust.yml
new file mode 100644
index 0000000..e7c170d
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/.github/workflows/rust.yml
@@ -0,0 +1,166 @@
+on:
+ pull_request:
+ branches:
+ - main
+ push:
+ branches:
+ - main
+
+name: Continuous integration
+
+jobs:
+ test_on_linux:
+ name: Tests on Linux
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions-rs/toolchain@v1.0.7
+ with:
+ toolchain: stable
+ override: true
+ profile: minimal
+ - name: Cache cargo
+ uses: actions/cache@v3
+ with:
+ path: |
+ target
+ ~/.cargo/git
+ ~/.cargo/registry
+ key: ${{ runner.os }}-cargo-test-${{ hashFiles('**/Cargo.lock') }}
+ - name: Run cargo-tarpaulin
+ uses: actions-rs/tarpaulin@v0.1
+ with:
+ args: --features intl --ignore-tests
+ - name: Upload to codecov.io
+ uses: codecov/codecov-action@v3
+
+ test_on_windows:
+ name: Tests on Windows
+ runs-on: windows-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions-rs/toolchain@v1.0.7
+ with:
+ toolchain: stable
+ override: true
+ profile: minimal
+ - name: Cache cargo
+ uses: actions/cache@v3
+ with:
+ path: |
+ target
+ ~/.cargo/git
+ ~/.cargo/registry
+ key: ${{ runner.os }}-cargo-test-${{ hashFiles('**/Cargo.lock') }}
+ - uses: actions-rs/cargo@v1
+ with:
+ command: test
+ args: -v --features intl
+
+ test_on_macos:
+ name: Tests on MacOS
+ runs-on: macos-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions-rs/toolchain@v1.0.7
+ with:
+ toolchain: stable
+ override: true
+ profile: minimal
+ - uses: actions-rs/cargo@v1
+ with:
+ command: test
+ args: -v --features intl
+
+ fmt:
+ name: Rustfmt
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions-rs/toolchain@v1.0.7
+ with:
+ toolchain: stable
+ override: true
+ profile: minimal
+ components: rustfmt
+ - uses: actions-rs/cargo@v1
+ with:
+ command: fmt
+ args: --all -- --check
+
+ clippy:
+ name: Clippy
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions-rs/toolchain@v1.0.7
+ with:
+ toolchain: stable
+ override: true
+ profile: minimal
+ components: clippy
+ - name: Cache cargo
+ uses: actions/cache@v3
+ with:
+ path: |
+ target
+ ~/.cargo/git
+ ~/.cargo/registry
+ key: ${{ runner.os }}-cargo-clippy-${{ hashFiles('**/Cargo.lock') }}
+ - uses: actions-rs/cargo@v1
+ with:
+ command: clippy
+ args: -- --verbose
+
+ examples:
+ name: Examples
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions-rs/toolchain@v1.0.7
+ with:
+ toolchain: stable
+ override: true
+ profile: minimal
+ - name: Cache cargo
+ uses: actions/cache@v3
+ with:
+ path: |
+ target
+ ~/.cargo/git
+ ~/.cargo/registry
+ key: ${{ runner.os }}-cargo-examples-${{ hashFiles('**/Cargo.lock') }}
+ - run: cd boa_examples
+ - name: Build examples
+ uses: actions-rs/cargo@v1
+ with:
+ command: build
+ - name: Run example classes
+ uses: actions-rs/cargo@v1
+ with:
+ command: run
+ args: --bin classes
+
+ doc:
+ name: Documentation
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions-rs/toolchain@v1.0.7
+ with:
+ toolchain: stable
+ override: true
+ profile: minimal
+ - name: Cache cargo
+ uses: actions/cache@v3
+ with:
+ path: |
+ target
+ ~/.cargo/git
+ ~/.cargo/registry
+ key: ${{ runner.os }}-cargo-doc-${{ hashFiles('**/Cargo.lock') }}
+ - name: Generate documentation
+ uses: actions-rs/cargo@v1
+ with:
+ command: doc
+ args: -v --document-private-items --all-features
diff --git a/__wasm/wit-bindgen-sample/engine/boa/.github/workflows/security_audit.yml b/__wasm/wit-bindgen-sample/engine/boa/.github/workflows/security_audit.yml
new file mode 100644
index 0000000..d54cb3c
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/.github/workflows/security_audit.yml
@@ -0,0 +1,12 @@
+name: Security audit
+on:
+ schedule:
+ - cron: "0 0 * * *"
+jobs:
+ audit:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions-rs/audit-check@v1.2.0
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/__wasm/wit-bindgen-sample/engine/boa/.github/workflows/test262.yml b/__wasm/wit-bindgen-sample/engine/boa/.github/workflows/test262.yml
new file mode 100644
index 0000000..8a047b3
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/.github/workflows/test262.yml
@@ -0,0 +1,119 @@
+name: EcmaScript official test suite (test262)
+on:
+ push:
+ branches:
+ - main
+ tags:
+ - v*
+ pull_request:
+ branches:
+ - main
+
+jobs:
+ run_test262:
+ name: Run the test262 test suite
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout the repository
+ uses: actions/checkout@v3
+ with:
+ submodules: true
+ path: boa
+ - name: Install the Rust toolchain
+ uses: actions-rs/toolchain@v1.0.7
+ with:
+ toolchain: stable
+ override: true
+ profile: minimal
+ - name: Cache cargo
+ uses: actions/cache@v3
+ with:
+ path: |
+ target
+ ~/.cargo/git
+ ~/.cargo/registry
+ key: ${{ runner.os }}-cargo-test262-${{ hashFiles('**/Cargo.lock') }}
+
+ # Run the test suite and upload the results
+ - name: Checkout GitHub pages
+ uses: actions/checkout@v3
+ with:
+ ref: gh-pages
+ path: gh-pages
+
+ - name: Run the test262 test suite
+ run: |
+ cd boa
+ mkdir ../results
+ cargo run --release --bin boa_tester -- run -v -o ../results/test262
+ cd ..
+
+ # Run the results comparison
+ - name: Compare results
+ if: github.event_name == 'pull_request'
+ id: compare-non-vm
+ shell: bash
+ run: |
+ cd boa
+ comment="$(./target/release/boa_tester compare ../gh-pages/test262/refs/heads/main/latest.json ../results/test262/pull/latest.json -m)"
+ comment="${comment//'%'/'%25'}"
+ comment="${comment//$'\n'/'%0A'}"
+ comment="${comment//$'\r'/'%0D'}"
+ echo "::set-output name=comment::$comment"
+
+ - name: Get the PR number
+ if: github.event_name == 'pull_request'
+ id: pr-number
+ uses: kkak10/pr-number-action@v1.3
+
+ - name: Find Previous Comment
+ if: github.event_name == 'pull_request'
+ uses: peter-evans/find-comment@v2
+ id: previous-comment
+ with:
+ issue-number: ${{ steps.pr-number.outputs.pr }}
+ body-includes: Test262 conformance changes
+
+ - name: Update comment
+ if: github.event_name == 'pull_request' && steps.previous-comment.outputs.comment-id
+ uses: peter-evans/create-or-update-comment@v2
+ continue-on-error: true
+ with:
+ comment-id: ${{ steps.previous-comment.outputs.comment-id }}
+ body: |
+ ### Test262 conformance changes
+
+ ${{ steps.compare-non-vm.outputs.comment }}
+ ${{ steps.compare-vm.outputs.comment }}
+ edit-mode: replace
+
+ - name: Write a new comment
+ if: github.event_name == 'pull_request' && !steps.previous-comment.outputs.comment-id
+ uses: peter-evans/create-or-update-comment@v2
+ continue-on-error: true
+ with:
+ issue-number: ${{ steps.pr-number.outputs.pr }}
+ body: |
+ ### Test262 conformance changes
+
+ ${{ steps.compare-non-vm.outputs.comment }}
+ ${{ steps.compare-vm.outputs.comment }}
+
+ # Commit changes to GitHub pages.
+ - name: Commit files
+ if: github.event_name == 'push'
+ run: |
+ cp -r ./results/test262/* ./gh-pages/test262/
+ cd gh-pages
+ git config --local user.email "action@github.com"
+ git config --local user.name "GitHub Action"
+ git add test262
+ git commit -m "Add new test262 results" -a
+ cd ..
+ - name: Upload results
+ if: github.event_name == 'push'
+ uses: ad-m/github-push-action@v0.6.0
+ with:
+ directory: gh-pages
+ branch: gh-pages
+ github_token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/__wasm/wit-bindgen-sample/engine/boa/.github/workflows/webassembly.yml b/__wasm/wit-bindgen-sample/engine/boa/.github/workflows/webassembly.yml
new file mode 100644
index 0000000..6f2c769
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/.github/workflows/webassembly.yml
@@ -0,0 +1,49 @@
+on:
+ pull_request:
+ branches:
+ - main
+ push:
+ branches:
+ - main
+
+name: Webassembly demo
+
+jobs:
+ check_style:
+ name: Check webassembly demo style
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+ - name: Check code formatting
+ run: npx prettier --check .
+
+ build:
+ name: Build webassembly demo
+ runs-on: ubuntu-latest
+ env:
+ WASM_PACK_PATH: ~/.cargo/bin/wasm-pack
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions-rs/toolchain@v1.0.7
+ with:
+ toolchain: stable
+ override: true
+ profile: minimal
+ - name: Install wasm-pack
+ run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
+ - name: Cache npm build
+ uses: actions/cache@v3
+ with:
+ path: |
+ node_modules
+ target
+ ~/.cargo/git
+ ~/.cargo/registry
+ boa_wasm/pkg
+ key: ${{ runner.os }}-npm-build-target-${{ hashFiles('**/package-lock.json') }}
+ - uses: actions/setup-node@v3
+ with:
+ node-version: "16"
+ - run: npm ci
+ - run: npm run build
diff --git a/__wasm/wit-bindgen-sample/engine/boa/.gitignore b/__wasm/wit-bindgen-sample/engine/boa/.gitignore
new file mode 100644
index 0000000..56396d4
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/.gitignore
@@ -0,0 +1,34 @@
+# IDE
+.idea/
+*.iml
+
+# Vim
+*.*.swp
+*.*.swo
+
+# Build
+target
+dist
+**/*.rs.bk
+node_modules
+.DS_Store
+yarn-error.log
+.vscode/settings.json
+
+# tests/js/test.js is used for testing changes locally
+tests/js/test.js
+.boa_history
+
+# Profiling
+*.string_data
+*.string_index
+*.events
+chrome_profiler.json
+*.mm_profdata
+
+# Logs
+*.log
+
+# Yarn
+.yarn
+.yarnrc.yml
diff --git a/__wasm/wit-bindgen-sample/engine/boa/.gitmodules b/__wasm/wit-bindgen-sample/engine/boa/.gitmodules
new file mode 100644
index 0000000..c41542f
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "test262"]
+ path = test262
+ url = https://github.com/tc39/test262.git
diff --git a/__wasm/wit-bindgen-sample/engine/boa/.prettierignore b/__wasm/wit-bindgen-sample/engine/boa/.prettierignore
new file mode 100644
index 0000000..ce0118b
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/.prettierignore
@@ -0,0 +1,10 @@
+# Ignore artifacts:
+*.rs
+target
+node_modules
+boa_engine/benches/bench_scripts/mini_js.js
+boa_engine/benches/bench_scripts/clean_js.js
+boa_wasm/pkg
+dist
+test262
+tests/js/test.js
diff --git a/__wasm/wit-bindgen-sample/engine/boa/.vscode/launch.json b/__wasm/wit-bindgen-sample/engine/boa/.vscode/launch.json
new file mode 100644
index 0000000..ce5770f
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/.vscode/launch.json
@@ -0,0 +1,35 @@
+{
+ // Use IntelliSense to learn about possible attributes.
+ // Hover to view descriptions of existing attributes.
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "type": "lldb",
+ "request": "launch",
+ "name": "Launch",
+ "windows": {
+ "program": "${workspaceFolder}/target/debug/boa.exe"
+ },
+ "program": "${workspaceFolder}/target/debug/boa",
+ "args": ["${workspaceFolder}/tests/js/test.js"],
+ "sourceLanguages": ["rust"]
+ },
+ {
+ "type": "lldb",
+ "request": "launch",
+ "name": "Launch (VM)",
+ "cargo": {
+ "args": [
+ "run",
+ "--manifest-path",
+ "./boa_cli/Cargo.toml",
+ "--features",
+ "vm"
+ ]
+ },
+ "args": ["-t", "${workspaceFolder}/tests/js/test.js"],
+ "sourceLanguages": ["rust"]
+ }
+ ]
+}
diff --git a/__wasm/wit-bindgen-sample/engine/boa/.vscode/tasks.json b/__wasm/wit-bindgen-sample/engine/boa/.vscode/tasks.json
new file mode 100644
index 0000000..71c4d1a
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/.vscode/tasks.json
@@ -0,0 +1,129 @@
+{
+ // See https://go.microsoft.com/fwlink/?LinkId=733558
+ // for the documentation about the tasks.json format
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "type": "process",
+ "label": "Cargo Run",
+ "command": "cargo",
+ "args": ["run", "--bin", "boa", "./tests/js/test.js"],
+ "group": {
+ "kind": "build",
+ "isDefault": true
+ },
+ "presentation": {
+ "clear": true
+ },
+ "options": {
+ "env": {
+ "RUST_BACKTRACE": "1"
+ }
+ },
+ "problemMatcher": []
+ },
+ {
+ "type": "process",
+ "label": "Cargo Run (VM)",
+ "command": "cargo",
+ "args": ["run", "--", "-t", "../tests/js/test.js"],
+ "group": {
+ "kind": "build",
+ "isDefault": true
+ },
+ "presentation": {
+ "clear": true
+ },
+ "options": {
+ "cwd": "${workspaceFolder}/boa_cli",
+ "env": {
+ "RUST_BACKTRACE": "1"
+ }
+ },
+ "problemMatcher": []
+ },
+ {
+ "type": "process",
+ "label": "Cargo Run (Profiler)",
+ "command": "cargo",
+ "args": ["run", "--features", "Boa/profiler", "../tests/js/test.js"],
+ "group": "build",
+ "options": {
+ "env": {
+ "RUST_BACKTRACE": "full"
+ },
+ "cwd": "${workspaceFolder}/boa_cli"
+ },
+ "presentation": {
+ "clear": true
+ },
+ "problemMatcher": []
+ },
+ {
+ "type": "process",
+ "label": "Cargo Run (Profiler & VM)",
+ "command": "cargo",
+ "args": [
+ "run",
+ "--features",
+ "Boa/profiler",
+ "--features",
+ "vm",
+ "../tests/js/test.js"
+ ],
+ "group": "build",
+ "options": {
+ "env": {
+ "RUST_BACKTRACE": "full"
+ },
+ "cwd": "${workspaceFolder}/boa_cli"
+ },
+ "presentation": {
+ "clear": true
+ },
+ "problemMatcher": []
+ },
+ {
+ "type": "process",
+ "label": "Get Tokens",
+ "command": "cargo",
+ "args": ["run", "--bin", "boa", "--", "-t=Debug", "./tests/js/test.js"],
+ "group": "build",
+ "presentation": {
+ "clear": true
+ },
+ "problemMatcher": []
+ },
+ {
+ "type": "process",
+ "label": "Get AST",
+ "command": "cargo",
+ "args": ["run", "--bin", "boa", "--", "-a=Debug", "./tests/js/test.js"],
+ "group": "build",
+ "presentation": {
+ "clear": true
+ },
+ "problemMatcher": []
+ },
+ {
+ "type": "process",
+ "label": "Cargo Test",
+ "command": "cargo",
+ "args": ["test"],
+ "group": {
+ "kind": "test",
+ "isDefault": true
+ },
+ "presentation": {
+ "clear": true
+ }
+ },
+ {
+ "type": "process",
+ "label": "Cargo Test Build",
+ "command": "cargo",
+ "args": ["test", "--no-run"],
+ "group": "build"
+ }
+ ]
+}
diff --git a/__wasm/wit-bindgen-sample/engine/boa/CHANGELOG.md b/__wasm/wit-bindgen-sample/engine/boa/CHANGELOG.md
new file mode 100644
index 0000000..dd7af0b
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/CHANGELOG.md
@@ -0,0 +1,1209 @@
+# CHANGELOG
+
+## What's Changed
+
+# [0.15.0 (2022-06-10)](https://github.com/boa-dev/boa/compare/v0.14...v0.15)
+
+### Feature Enhancements
+
+- Deploy playground to custom destination dir by @jedel1043 in [#1943](https://github.com/boa-dev/boa/pull/1943)
+- add README for crates.io publish by @superhawk610 in [#1952](https://github.com/boa-dev/boa/pull/1952)
+- migrated to clap 3 by @manthanabc in [#1957](https://github.com/boa-dev/boa/pull/1957)
+- Implement unscopables for Array.prototype by @NorbertGarfield in [#1963](https://github.com/boa-dev/boa/pull/1963)
+- Retrieve feature-based results for Test262 runs by @NorbertGarfield in [#1980](https://github.com/boa-dev/boa/pull/1980)
+- Added better error handling for the Boa tester by @Razican in [#1984](https://github.com/boa-dev/boa/pull/1984)
+- Add From for JsValue by @lastmjs in [#1990](https://github.com/boa-dev/boa/pull/1990)
+- Implement Classes by @raskad in [#1976](https://github.com/boa-dev/boa/pull/1976)
+- Allow `PropertyName`s in `BindingProperty`in `ObjectBindingPattern` by @raskad in [#2022](https://github.com/boa-dev/boa/pull/2022)
+- Allow `Initializer` after `ArrayBindingPattern` in `FormalParameter` by @raskad in [#2002](https://github.com/boa-dev/boa/pull/2002)
+- Allow unicode escaped characters in identifiers that are keywords by @raskad in [#2021](https://github.com/boa-dev/boa/pull/2021)
+- Feature `JsTypedArray`s by @HalidOdat in [#2003](https://github.com/boa-dev/boa/pull/2003)
+- Allow creating object with true/false property names by @lupd in [#2028](https://github.com/boa-dev/boa/pull/2028)
+- Implement `get RegExp.prototype.hasIndices` by @HalidOdat in [#2031](https://github.com/boa-dev/boa/pull/2031)
+- Partial implementation for Intl.DateTimeFormat by @NorbertGarfield in [#2025](https://github.com/boa-dev/boa/pull/2025)
+- Allow `let` as variable declaration name by @raskad in [#2044](https://github.com/boa-dev/boa/pull/2044)
+- cargo workspaces fixes #2001 by @jasonwilliams in [#2026](https://github.com/boa-dev/boa/pull/2026)
+- Move redeclaration errors to parser by @raskad in [#2027](https://github.com/boa-dev/boa/pull/2027)
+- Feature `JsFunction` by @HalidOdat in [#2015](https://github.com/boa-dev/boa/pull/2015)
+- Improve `JsString` performance by @YXL76 in [#2042](https://github.com/boa-dev/boa/pull/2042)
+- Implement ResolveLocale helper by @NorbertGarfield in [#2036](https://github.com/boa-dev/boa/pull/2036)
+- Refactor `IdentifierReference` parsing by @raskad in [#2055](https://github.com/boa-dev/boa/pull/2055)
+- Implement the global `eval()` function by @raskad in [#2041](https://github.com/boa-dev/boa/pull/2041)
+- DateTimeFormat helpers by @NorbertGarfield in [#2064](https://github.com/boa-dev/boa/pull/2064)
+- Create `Date` standard constructor by @jedel1043 in [#2079](https://github.com/boa-dev/boa/pull/2079)
+- Implement `ProxyBuilder` by @jedel1043 in [#2076](https://github.com/boa-dev/boa/pull/2076)
+- Remove `strict` flag from `Context` by @raskad in [#2069](https://github.com/boa-dev/boa/pull/2069)
+- Integrate ICU4X into `Intl` module by @jedel1043 in [#2083](https://github.com/boa-dev/boa/pull/2083)
+- Implement `Function` constructor by @raskad in [#2090](https://github.com/boa-dev/boa/pull/2090)
+- Parse private generator methods in classes by @raskad in [#2092](https://github.com/boa-dev/boa/pull/2092)
+
+### Bug Fixes
+
+- Fix link to the playground by @raskad in [#1947](https://github.com/boa-dev/boa/pull/1947)
+- convert inner datetime to local in `to_date_string` by @superhawk610 in [#1953](https://github.com/boa-dev/boa/pull/1953)
+- Fix panic on AST dump in JSON format by @kilotaras in [#1959](https://github.com/boa-dev/boa/pull/1959)
+- Fix panic in do while by @pdogr in [#1968](https://github.com/boa-dev/boa/pull/1968)
+- Support numbers with multiple leading zeroes by @lupd in [#1979](https://github.com/boa-dev/boa/pull/1979)
+- Fix length properties on array methods by @lupd in [#1983](https://github.com/boa-dev/boa/pull/1983)
+- Allow boolean/null as property identifier by dot operator assignment by @lupd in [#1985](https://github.com/boa-dev/boa/pull/1985)
+- fix(vm): off-by-one in code block stringification. by @tsutton in [#1999](https://github.com/boa-dev/boa/pull/1999)
+- Indicate bigint has constructor by @lupd in [#2008](https://github.com/boa-dev/boa/pull/2008)
+- Change `ArrayBuffer` `byteLength` to accessor property by @lupd in [#2010](https://github.com/boa-dev/boa/pull/2010)
+- Fix `ArrayBuffer.isView()` by @HalidOdat in [#2019](https://github.com/boa-dev/boa/pull/2019)
+- Fix casting negative number to usize in `Array.splice` by @lupd in [#2030](https://github.com/boa-dev/boa/pull/2030)
+- Fix `Symbol` and `BigInt` constructors by @HalidOdat in [#2032](https://github.com/boa-dev/boa/pull/2032)
+- Make `Array.prototype` an array object by @HalidOdat in [#2033](https://github.com/boa-dev/boa/pull/2033)
+- Fix early return in `for in loop` head by @raskad in [#2043](https://github.com/boa-dev/boa/pull/2043)
+
+### Internal Improvements
+
+- docs: update README by structuring the topics by @ftonato in [#1958](https://github.com/boa-dev/boa/pull/1958)
+- Migrate to NPM and cleanup Playground by @jedel1043 in [#1951](https://github.com/boa-dev/boa/pull/1951)
+- Fix performance bottleneck in VM by @pdogr in [#1973](https://github.com/boa-dev/boa/pull/1973)
+- Remove `git2` and `hex` dependencies by @raskad in [#1992](https://github.com/boa-dev/boa/pull/1992)
+- Fix rust 1.60 clippy lints by @raskad in [#2014](https://github.com/boa-dev/boa/pull/2014)
+- Refactor `RegExp` constructor methods by @raskad in [#2049](https://github.com/boa-dev/boa/pull/2049)
+- Fixing build for changes in clippy for Rust 1.61 by @Razican in [#2082](https://github.com/boa-dev/boa/pull/2082)
+
+**Full Changelog**: https://github.com/boa-dev/boa/compare/v0.14...v0.15
+
+# [0.14.0 (2022-03-15) - Virtual Machine](https://github.com/boa-dev/boa/compare/v0.13...v0.14)
+
+### Feature Enhancements
+
+- Implement functions for vm by @HalidOdat in [#1433](https://github.com/boa-dev/boa/pull/1433)
+- Implement Object.getOwnPropertyNames and Object.getOwnPropertySymbols by @kevinputera in [#1606](https://github.com/boa-dev/boa/pull/1606)
+- Implement `Symbol.prototype.valueOf` by @hle0 in [#1618](https://github.com/boa-dev/boa/pull/1618)
+- Implement Array.prototype.at() by @nekevss in [#1613](https://github.com/boa-dev/boa/pull/1613)
+- Implement Array.from by @nrabulinski [#1831](https://github.com/boa-dev/boa/pull/1831)
+- Implement String.fromCharCode by @hle0 in [#1619](https://github.com/boa-dev/boa/pull/1619)
+- Implement `Typed Array` built-in by @Razican in [#1552](https://github.com/boa-dev/boa/pull/1552)
+- Implement arguments exotic objects by @jedel1043 in [#1522](https://github.com/boa-dev/boa/pull/1522)
+- Allow `BindingPattern`s as `CatchParameter` by @lowr in [#1628](https://github.com/boa-dev/boa/pull/1628)
+- Implement `Symbol.prototype[ @@toPrimitive ]` by @Nimpruda in [#1634](https://github.com/boa-dev/boa/pull/1634)
+- Implement Generator parsing by @raskad in [#1575](https://github.com/boa-dev/boa/pull/1575)
+- Implement Object.hasOwn and improve Object.prototype.hasOwnProperty by @kevinputera in [#1639](https://github.com/boa-dev/boa/pull/1639)
+- Hashbang lexer support by @nekevss in [#1631](https://github.com/boa-dev/boa/pull/1631)
+- Implement `delete` operator in the vm by @raskad in [#1649](https://github.com/boa-dev/boa/pull/1649)
+- Implement Object.fromEntries by @kevinputera in [#1660](https://github.com/boa-dev/boa/pull/1660)
+- Initial implementation for increment/decrement in VM by @abhishekc-sharma in [#1621](https://github.com/boa-dev/boa/pull/1621)
+- Implement `Proxy` object by @raskad in [#1664](https://github.com/boa-dev/boa/pull/1664)
+- Implement object literals for vm by @raskad in [#1668](https://github.com/boa-dev/boa/pull/1668)
+- Implement Array findLast and findLastIndex by @bsinky in [#1665](https://github.com/boa-dev/boa/pull/1665)
+- Implement `DataView` built-in object by @Nimpruda in [#1662](https://github.com/boa-dev/boa/pull/1662)
+- Clean-up contribution guidelines, dependencies, Test262, MSRV by @Razican in [#1683](https://github.com/boa-dev/boa/pull/1683)
+- Implement Async Generator Parsing by @nekevss in [#1669](https://github.com/boa-dev/boa/pull/1669)
+- Implement prototype of `Intl` built-in by @hle0 in [#1622](https://github.com/boa-dev/boa/pull/1622)
+- Add limited console.trace implementation by @osman-turan in [#1623](https://github.com/boa-dev/boa/pull/1623)
+- Allow `BindingPattern` in function parameters by @am-a-man in [#1666](https://github.com/boa-dev/boa/pull/1666)
+- Small test ux improvements by @orndorffgrant in [#1704](https://github.com/boa-dev/boa/pull/1704)
+- Implement missing vm operations by @raskad in [#1697](https://github.com/boa-dev/boa/pull/1697)
+- Added fallible allocation to data blocks by @Razican in [#1728](https://github.com/boa-dev/boa/pull/1728)
+- Document CodeBlock by @TheDoctor314 in [#1691](https://github.com/boa-dev/boa/pull/1691)
+- Generic `JsResult` in `context.throw_` methods by @HalidOdat in [#1734](https://github.com/boa-dev/boa/pull/1734)
+- Implement `String.raw( template, ...substitutions )` by @HalidOdat in [#1741](https://github.com/boa-dev/boa/pull/1741)
+- Updated test262 suite and dependencies by @Razican in [#1755](https://github.com/boa-dev/boa/pull/1755)
+- Lexer string interning by @Razican in [#1758](https://github.com/boa-dev/boa/pull/1758)
+- Adjust `compile` and `execute` to avoid clones by @Razican in [#1778](https://github.com/boa-dev/boa/pull/1778)
+- Interner support in the parser by @Razican in [#1765](https://github.com/boa-dev/boa/pull/1765)
+- Convert `Codeblock` variables to `Sym` by @raskad in [#1798](https://github.com/boa-dev/boa/pull/1798)
+- Using production builds for WebAssembly by @Razican in [#1825](https://github.com/boa-dev/boa/pull/1825)
+- Give the arrow function its proper name by @rumpl in [#1832](https://github.com/boa-dev/boa/pull/1832)
+- Unwrap removal by @Razican in [#1842](https://github.com/boa-dev/boa/pull/1842)
+- Feature `JsArray` by @HalidOdat in [#1746](https://github.com/boa-dev/boa/pull/1746)
+- Rename "Boa" to boa_engine, moved GC and profiler to their crates by @Razican in [#1844](https://github.com/boa-dev/boa/pull/1844)
+- Added conversions from and to serde_json's Value type by @Razican in [#1851](https://github.com/boa-dev/boa/pull/1851)
+- Toggleable `JsValue` internals displaying by @HalidOdat in [#1865](https://github.com/boa-dev/boa/pull/1865)
+- Implement generator execution by @raskad in [#1790](https://github.com/boa-dev/boa/pull/1790)
+- Feature arrays with empty elements by @HalidOdat in [#1870](https://github.com/boa-dev/boa/pull/1870)
+- Removed reference counted pointers from `JsValue` variants by @Razican in [#1866](https://github.com/boa-dev/boa/pull/1866)
+- Implement `Object.prototype.toLocaleString()` by @HalidOdat in [#1875](https://github.com/boa-dev/boa/pull/1875)
+- Implement `AggregateError` by @HalidOdat in [#1888](https://github.com/boa-dev/boa/pull/1888)
+- Implement destructing assignments for assignment expressions by @raskad in [#1895](https://github.com/boa-dev/boa/pull/1895)
+- Added boa examples by @elasmojs in [#1161](https://github.com/boa-dev/boa/pull/1161)
+
+### Bug Fixes
+
+- Fix BigInt and Number comparison by @HalidOdat [#1887](https://github.com/boa-dev/boa/pull/1887)
+- Fix broken structure links in the documentation by @abhishekc-sharma in [#1612](https://github.com/boa-dev/boa/pull/1612)
+- Use function name from identifiers in assignment expressions by @raskad [#1908](https://github.com/boa-dev/boa/pull/1908)
+- Fix integer parsing by @nrabulinski in [#1614](https://github.com/boa-dev/boa/pull/1614)
+- Fix `Number.toExponential` and `Number.toFixed` by @nrabulinski in [#1620](https://github.com/boa-dev/boa/pull/1620)
+- Badge updates by @atouchet in [#1638](https://github.com/boa-dev/boa/pull/1638)
+- refactor: fix construct_error functions by @RageKnify in [#1703](https://github.com/boa-dev/boa/pull/1703)
+- Fix internal vm tests by @raskad in [#1718](https://github.com/boa-dev/boa/pull/1718)
+- Removed a bunch of warnings and clippy errors by @Razican in [#1754](https://github.com/boa-dev/boa/pull/1754)
+- Fix some broken links in the profiler documentation by @Razican in [#1762](https://github.com/boa-dev/boa/pull/1762)
+- Add proxy handling in `isArray` method by @raskad in [#1777](https://github.com/boa-dev/boa/pull/1777)
+- Copy/paste fix in Proxy error message by @icecream17 in [#1787](https://github.com/boa-dev/boa/pull/1787)
+- Fixed #1768 by @Razican in [#1820](https://github.com/boa-dev/boa/pull/1820)
+- Fix string.prototype methods and add static string methods by @jevancc in [#1123](https://github.com/boa-dev/boa/pull/1123)
+- Handle allocation errors by @y21 in [#1850](https://github.com/boa-dev/boa/pull/1850)
+- Fix wasm use outside browsers by @Razican in [#1846](https://github.com/boa-dev/boa/pull/1846)
+- Add assertion to check that a break label is identified at compile-time by @VTCAKAVSMoACE in [#1852](https://github.com/boa-dev/boa/pull/1852)
+- Correct reference error message by @aaronmunsters in [#1855](https://github.com/boa-dev/boa/pull/1855)
+- Fixing main branch workflows by @Razican in [#1858](https://github.com/boa-dev/boa/pull/1858)
+- Correct pop_on_return behaviour by @VTCAKAVSMoACE in [#1853](https://github.com/boa-dev/boa/pull/1853)
+- Fix equality between objects and `undefined` or `null` by @HalidOdat in [#1872](https://github.com/boa-dev/boa/pull/1872)
+- Removing the panic in favour of an error result by @Razican in [#1874](https://github.com/boa-dev/boa/pull/1874)
+- Make `Object.getOwnPropertyDescriptors` spec compliant by @HalidOdat in [#1876](https://github.com/boa-dev/boa/pull/1876)
+- Make `Error` and `%NativeError%` spec compliant by @HalidOdat in [#1879](https://github.com/boa-dev/boa/pull/1879)
+- Fix `Number.prototype.toString` when passing `undefined` as radix by @HalidOdat in [#1877](https://github.com/boa-dev/boa/pull/1877)
+- Cleanup vm stack on function return by @raskad in [#1880](https://github.com/boa-dev/boa/pull/1880)
+- `%NativeError%.[[prototype]]` should be `Error` constructor by @HalidOdat in [#1883](https://github.com/boa-dev/boa/pull/1883)
+- Make `StringToNumber` spec compliant by @HalidOdat in [#1881](https://github.com/boa-dev/boa/pull/1881)
+- Fix `PropertyKey` to `JsValue` conversion by @HalidOdat in [#1886](https://github.com/boa-dev/boa/pull/1886)
+- Make iterator spec complaint by @HalidOdat in [#1889](https://github.com/boa-dev/boa/pull/1889)
+- Implement `Number.parseInt` and `Number.parseFloat` by @HalidOdat in [#1894](https://github.com/boa-dev/boa/pull/1894)
+- Fix unreachable panics in compile_access by @VTCAKAVSMoACE in [#1861](https://github.com/boa-dev/boa/pull/1861)
+- Continue panic fixes by @VTCAKAVSMoACE in [#1896](https://github.com/boa-dev/boa/pull/1896)
+- Deny const declarations without initializer inside for loops by @jedel1043 in [#1903](https://github.com/boa-dev/boa/pull/1903)
+- Fix try/catch/finally related bugs and add tests by @jedel1043 in [#1901](https://github.com/boa-dev/boa/pull/1901)
+- Compile StatementList after parse passes on negative tests by @raskad in [#1906](https://github.com/boa-dev/boa/pull/1906)
+- Prevent breaks without loop or switch from causing panics by @VTCAKAVSMoACE in [#1860](https://github.com/boa-dev/boa/pull/1860)
+- Fix postfix increment and decrement return values by @raskad in [#1913](https://github.com/boa-dev/boa/pull/1913)
+
+### Internal Improvements
+
+- Rewrite initialization of builtins to use the `BuiltIn` trait by @jedel1043 in [#1586](https://github.com/boa-dev/boa/pull/1586)
+- Unify object creation with `empty` and `from_proto_and_data` methods by @jedel1043 in [#1567](https://github.com/boa-dev/boa/pull/1567)
+- VM Tidy Up by @jasonwilliams in [#1610](https://github.com/boa-dev/boa/pull/1610)
+- Fix master refs to main by @jasonwilliams in [#1637](https://github.com/boa-dev/boa/pull/1637)
+- Refresh vm docs and fix bytecode trace output by @raskad [#1921](https://github.com/boa-dev/boa/pull/1921)
+- Change type of object prototypes to `Option` by @jedel1043 in [#1640](https://github.com/boa-dev/boa/pull/1640)
+- Refactor `Function` internal methods and implement `BoundFunction` objects by @jedel1043 in [#1583](https://github.com/boa-dev/boa/pull/1583)
+- change that verbosity comparison to > 2 by @praveenbakkal in [#1680](https://github.com/boa-dev/boa/pull/1680)
+- Respect rust 1.56 by @RageKnify in [#1681](https://github.com/boa-dev/boa/pull/1681)
+- Add bors to CI by @RageKnify in [#1684](https://github.com/boa-dev/boa/pull/1684)
+- Adding VM conformance output to PR checks by @Razican in [#1685](https://github.com/boa-dev/boa/pull/1685)
+- Start removing non-VM path by @jasonwilliams in [#1747](https://github.com/boa-dev/boa/pull/1747)
+- Using upstream benchmark action by @Razican in [#1753](https://github.com/boa-dev/boa/pull/1753)
+- Fix bors hanging by @RageKnify in [#1767](https://github.com/boa-dev/boa/pull/1767)
+- add more timers on object functions by @jasonwilliams in [#1775](https://github.com/boa-dev/boa/pull/1775)
+- Update the PR benchmarks action by @Razican in [#1774](https://github.com/boa-dev/boa/pull/1774)
+- General code clean-up and new lint addition by @Razican in [#1809](https://github.com/boa-dev/boa/pull/1809)
+- Reduced the size of AST nodes by @Razican in [#1821](https://github.com/boa-dev/boa/pull/1821)
+- Using the new formatting arguments from Rust 1.58 by @Razican in [#1834](https://github.com/boa-dev/boa/pull/1834)
+- Rework RegExp struct to include bitflags field by @aaronmunsters in [#1837](https://github.com/boa-dev/boa/pull/1837)
+- Ignore wastefull `RegExp` tests by @raskad in [#1840](https://github.com/boa-dev/boa/pull/1840)
+- Refactor the environment for runtime performance by @raskad in [#1829](https://github.com/boa-dev/boa/pull/1829)
+- Refactor mapped `Arguments` object by @raskad in [#1849](https://github.com/boa-dev/boa/pull/1849)
+- Fixed dependabot for submodule by @Razican in [#1856](https://github.com/boa-dev/boa/pull/1856)
+- Refactorings for Rust 1.59 by @RageKnify in [#1867](https://github.com/boa-dev/boa/pull/1867)
+- Removing internal deprecated functions by @HalidOdat in [#1854](https://github.com/boa-dev/boa/pull/1854)
+- Remove `toInteger` and document the `string` builtin by @jedel1043 in [#1884](https://github.com/boa-dev/boa/pull/1884)
+- Extract `Intrinsics` struct from `Context` and cleanup names by @jedel1043 in [#1890](https://github.com/boa-dev/boa/pull/1890)
+
+**Full Changelog**: https://github.com/boa-dev/boa/compare/v0.13...v0.14
+
+# [0.13.0 (2021-09-30) - Many new features and refactors](https://github.com/boa-dev/boa/compare/v0.12.0...v0.13.0)
+
+Feature Enhancements:
+
+- [FEATURE #1526](https://github.com/boa-dev/boa/pull/1526): Implement ComputedPropertyName for accessor properties in ObjectLiteral (@raskad)
+- [FEATURE #1365](https://github.com/boa-dev/boa/pull/1365): Implement splice method (@neeldug)
+- [FEATURE #1364](https://github.com/boa-dev/boa/pull/1364): Implement spread for objects (@FrancisMurillo)
+- [FEATURE #1525](https://github.com/boa-dev/boa/pull/1525): Implement Object.preventExtensions() and Object.isExtensible() (@HalidOdat)
+- [FEATURE #1508](https://github.com/boa-dev/boa/pull/1508): Implement Object.values() (@HalidOdat)
+- [FEATURE #1332](https://github.com/boa-dev/boa/pull/1332): Implement Array.prototype.sort (@jedel1043)
+- [FEATURE #1417](https://github.com/boa-dev/boa/pull/1471): Implement Object.keys and Object.entries (@skyne98)
+- [FEATURE #1406](https://github.com/boa-dev/boa/pull/1406): Implement destructuring assignments (@raskad)
+- [FEATURE #1469](https://github.com/boa-dev/boa/pull/1469): Implement String.prototype.replaceAll (@raskad)
+- [FEATURE #1442](https://github.com/boa-dev/boa/pull/1442): Implement closure functions (@HalidOdat)
+- [FEATURE #1390](https://github.com/boa-dev/boa/pull/1390): Implement RegExp named capture groups (@raskad)
+- [FEATURE #1424](https://github.com/boa-dev/boa/pull/1424): Implement Symbol.for and Symbol.keyFor (@HalidOdat)
+- [FEATURE #1375](https://github.com/boa-dev/boa/pull/1375): Implement `at` method for string (@neeldug)
+- [FEATURE #1369](https://github.com/boa-dev/boa/pull/1369): Implement normalize method (@neeldug)
+- [FEATURE #1334](https://github.com/boa-dev/boa/pull/1334): Implement Array.prototype.copyWithin (@jedel1043)
+- [FEATURE #1326](https://github.com/boa-dev/boa/pull/1326): Implement get RegExp[@@species] (@raskad)
+- [FEATURE #1314](https://github.com/boa-dev/boa/pull/1314): Implement RegExp.prototype [ @@search ] ( string ) (@raskad)
+- [FEATURE #1451](https://github.com/boa-dev/boa/pull/1451): Feature prelude module (@HalidOdat)
+- [FEATURE #1523](https://github.com/boa-dev/boa/pull/1523): Allow moving NativeObject variables into closures as external captures (@jedel1043)
+
+Bug Fixes:
+
+- [BUG #1521](https://github.com/boa-dev/boa/pull/1521): Added "js" feature for getrandom for WebAssembly builds (@Razican)
+- [BUG #1528](https://github.com/boa-dev/boa/pull/1528): Always return undefined from functions that do not return (@raskad)
+- [BUG #1518](https://github.com/boa-dev/boa/pull/1518): Moving a JsObject inside a closure caused a panic (@jedel1043)
+- [BUG #1502](https://github.com/boa-dev/boa/pull/1502): Adjust EnumerableOwnPropertyNames to use all String type property keys (@raskad)
+- [BUG #1415](https://github.com/boa-dev/boa/pull/1415): Fix panic on bigint size (@neeldug)
+- [BUG #1477](https://github.com/boa-dev/boa/pull/1477): Properly handle NaN in new Date() (@raskad)
+- [BUG #1449](https://github.com/boa-dev/boa/pull/1449): Make Array.prototype methods spec compliant (@HalidOdat)
+- [BUG #1353](https://github.com/boa-dev/boa/pull/1353): Make Array.prototype.concat spec compliant (@neeldug)
+- [BUG #1384](https://github.com/boa-dev/boa/pull/1384): bitwise not operation (spec improvements) (@neeldug)
+- [BUG #1374](https://github.com/boa-dev/boa/pull/1374): Match and regexp construct fixes (@neeldug)
+- [BUG #1366](https://github.com/boa-dev/boa/pull/1366): Use lock for map iteration (@joshwd36)
+- [BUG #1360](https://github.com/boa-dev/boa/pull/1360): Adjust a comment to be next to the correct module (@teymour-aldridge)
+- [BUG #1349](https://github.com/boa-dev/boa/pull/1349): Fixes Array.protoype.includes (@neeldug)
+- [BUG #1348](https://github.com/boa-dev/boa/pull/1348): Fixes unshift maximum size (@neeldug)
+- [BUG #1339](https://github.com/boa-dev/boa/pull/1339): Scripts should not be considered in a block (@macmv)
+- [BUG #1312](https://github.com/boa-dev/boa/pull/1312): Fix display for nodes (@macmv)
+- [BUG #1347](https://github.com/boa-dev/boa/pull/1347): Fix stringpad abstract operation (@neeldug)
+- [BUG #1584](https://github.com/boa-dev/boa/pull/1584): Refactor the Math builtin object (spec compliant) (@jedel1043)
+- [BUG #1535](https://github.com/boa-dev/boa/pull/1535): Refactor JSON.parse (@raskad)
+- [BUG #1572](https://github.com/boa-dev/boa/pull/1572): Refactor builtin Map intrinsics to follow more closely the spec (@jedel1043)
+- [BUG #1445](https://github.com/boa-dev/boa/pull/1445): improve map conformance without losing perf (@neeldug)
+- [BUG #1488](https://github.com/boa-dev/boa/pull/1488): Date refactor (@raskad)
+- [BUG #1463](https://github.com/boa-dev/boa/pull/1463): Return function execution result from constructor if the function returned (@raskad)
+- [BUG #1434](https://github.com/boa-dev/boa/pull/1434): Refactor regexp costructor (@raskad)
+- [BUG #1350](https://github.com/boa-dev/boa/pull/1350): Refactor / Implement RegExp functions (@RageKnify) (@raskad)
+- [BUG #1331](https://github.com/boa-dev/boa/pull/1331): Implement missing species getters (@raskad)
+
+Internal Improvements:
+
+- [INTERNAL #1569](https://github.com/boa-dev/boa/pull/1569): Refactor EnvironmentRecordTrait functions (@raskad)
+- [INTERNAL #1464](https://github.com/boa-dev/boa/pull/1464): Optimize integer negation (@HalidOdat)
+- [INTERNAL #1550](https://github.com/boa-dev/boa/pull/1550): Add strict mode flag to Context (@raskad)
+- [INTERNAL #1561](https://github.com/boa-dev/boa/pull/1561): Implement abstract operation GetPrototypeFromConstructor (@jedel1043)
+- [INTERNAL #1309](https://github.com/boa-dev/boa/pull/1309): Implement Display for function objects(@kvnvelasco)
+- [INTERNAL #1492](https://github.com/boa-dev/boa/pull/1492): Implement new get_or_undefined method for `JsValue` (@jedel1043)
+- [INTERNAL #1553](https://github.com/boa-dev/boa/pull/1553): Fix benchmark action in CI (@jedel1043)
+- [INTERNAL #1547](https://github.com/boa-dev/boa/pull/1547): Replace FxHashMap with IndexMap in object properties (@raskad)
+- [INTERNAL #1435](https://github.com/boa-dev/boa/pull/1435): Constant JsStrings (@HalidOdat)
+- [INTERNAL #1499](https://github.com/boa-dev/boa/pull/1499): Updated the Test262 submodule (@Razican)
+- [INTERNAL #1458](https://github.com/boa-dev/boa/pull/1458): Refactor the JS testing system (@bartlomieju)
+- [INTERNAL #1485](https://github.com/boa-dev/boa/pull/1485): Implement abstract operation CreateArrayFromList (@jedel1043)
+- [INTERNAL #1465](https://github.com/boa-dev/boa/pull/1465): Feature throw Error object (@HalidOdat)
+- [INTERNAL #1493](https://github.com/boa-dev/boa/pull/1493): Rename boa::Result to JsResult (@bartlomieju)
+- [INTERNAL #1457](https://github.com/boa-dev/boa/pull/1457): Rename Value to JsValue (@HalidOdat)
+- [INTERNAL #1460](https://github.com/boa-dev/boa/pull/1460): Change StringGetOwnProperty to produce the same strings that the lexer produces (@raskad)
+- [INTERNAL #1425](https://github.com/boa-dev/boa/pull/1425): Extract PropertyMap struct from Object (@jedel1043)
+- [INTERNAL #1432](https://github.com/boa-dev/boa/pull/1432): Proposal of new PropertyDescriptor design (@jedel1043)
+- [INTERNAL #1383](https://github.com/boa-dev/boa/pull/1383): clippy lints and cleanup of old todos (@neeldug)
+- [INTERNAL #1346](https://github.com/boa-dev/boa/pull/1346): Implement gh-page workflow on release (@FrancisMurillo)
+- [INTERNAL #1422](https://github.com/boa-dev/boa/pull/1422): Refactor internal methods and make some builtins spec compliant (@HalidOdat)
+- [INTERNAL #1419](https://github.com/boa-dev/boa/pull/1419): Fix DataDescriptor Value to possibly be empty (@raskad)
+- [INTERNAL #1357](https://github.com/boa-dev/boa/pull/1357): Add Example to Execute a Function of a Script File (@schrieveslaach)
+- [INTERNAL #1408](https://github.com/boa-dev/boa/pull/1408): Refactor JavaScript bigint rust type (@HalidOdat)
+- [INTERNAL #1380](https://github.com/boa-dev/boa/pull/1380): Custom JavaScript string rust type (@HalidOdat)
+- [INTERNAL #1382](https://github.com/boa-dev/boa/pull/1382): Refactor JavaScript symbol rust type (@HalidOdat)
+- [INTERNAL #1361](https://github.com/boa-dev/boa/pull/1361): Redesign bytecode virtual machine (@HalidOdat)
+- [INTERNAL #1381](https://github.com/boa-dev/boa/pull/1381): Fixed documentation warnings (@Razican)
+- [INTERNAL #1352](https://github.com/boa-dev/boa/pull/1352): Respect Rust 1.53 (@RageKnify)
+- [INTERNAL #1356](https://github.com/boa-dev/boa/pull/1356): Respect Rust fmt updates (@RageKnify)
+- [INTERNAL #1338](https://github.com/boa-dev/boa/pull/1338): Fix cargo check errors (@neeldug)
+- [INTERNAL #1329](https://github.com/boa-dev/boa/pull/1329): Allow Value.set_field to throw (@raskad)
+- [INTERNAL #1333](https://github.com/boa-dev/boa/pull/1333): adds condition to avoid triggers from dependabot (@neeldug)
+- [INTERNAL #1337](https://github.com/boa-dev/boa/pull/1337): Fix github actions (@neeldug)
+
+# [0.12.0 (2021-06-07) - `Set`, accessors, `@@toStringTag` and no more panics](https://github.com/boa-dev/boa/compare/v0.11.0...v0.12.0)
+
+Feature Enhancements:
+
+- [FEATURE #1085](https://github.com/boa-dev/boa/pull/1085): Add primitive promotion for method calls on `GetField` (@RageKnify)
+- [FEATURE #1033](https://github.com/boa-dev/boa/pull/1033): Implement `Reflect` built-in object (@tofpie)
+- [FEATURE #1151](https://github.com/boa-dev/boa/pull/1151): Fully implement `EmptyStatement` (@SamuelQZQ)
+- [FEATURE #1158](https://github.com/boa-dev/boa/pull/1158): Include name in verbose results output of `boa-tester` (@0x7D2B)
+- [FEATURE #1225](https://github.com/boa-dev/boa/pull/1225): Implement `Math[ @@toStringTag ]` (@HalidOdat)
+- [FEATURE #1224](https://github.com/boa-dev/boa/pull/1224): Implement `JSON[ @@toStringTag ]` (@HalidOdat)
+- [FEATURE #1222](https://github.com/boa-dev/boa/pull/1222): Implement `Symbol.prototype.description` accessor (@HalidOdat)
+- [FEATURE #1221](https://github.com/boa-dev/boa/pull/1221): Implement `RegExp` flag accessors (@HalidOdat)
+- [FEATURE #1240](https://github.com/boa-dev/boa/pull/1240): Stop ignoring a bunch of tests (@Razican)
+- [FEATURE #1132](https://github.com/boa-dev/boa/pull/1132): Implement `Array.prototype.flat`/`flatMap` (@davimiku)
+- [FEATURE #1235](https://github.com/boa-dev/boa/pull/1235): Implement `Object.assign( target, ...sources )` (@HalidOdat)
+- [FEATURE #1243](https://github.com/boa-dev/boa/pull/1243): Cross realm symbols (@HalidOdat)
+- [FEATURE #1249](https://github.com/boa-dev/boa/pull/1249): Implement `Map.prototype[ @@toStringTag ]` (@wylie39)
+- [FEATURE #1111](https://github.com/boa-dev/boa/pull/1111): Implement `Set` builtin object (@RageKnify)
+- [FEATURE #1265](https://github.com/boa-dev/boa/pull/1265): Implement `BigInt.prototype[ @@toStringTag ]` (@n14littl)
+- [FEATURE #1102](https://github.com/boa-dev/boa/pull/1102): Support Unicode escape in identifier names (@jevancc)
+- [FEATURE #1273](https://github.com/boa-dev/boa/pull/1273): Add default parameter support (@0x7D2B)
+- [FEATURE #1292](https://github.com/boa-dev/boa/pull/1292): Implement `symbol.prototype[ @@ToStringTag ]` (@moadmmh)
+- [FEATURE #1291](https://github.com/boa-dev/boa/pull/1291): Support `GetOwnProperty` for `string` exotic object (@jarkonik)
+- [FEATURE #1296](https://github.com/boa-dev/boa/pull/1296): Added the `$262` object to the Test262 test runner (@Razican)
+- [FEATURE #1127](https://github.com/boa-dev/boa/pull/1127): Implement `Array.of` (@camc)
+
+Bug Fixes:
+
+- [BUG #1071](https://github.com/boa-dev/boa/pull/1071): Fix attribute configurable of the length property of arguments (@tofpie)
+- [BUG #1073](https://github.com/boa-dev/boa/pull/1073): Fixed spelling (@vishalsodani)
+- [BUG #1072](https://github.com/boa-dev/boa/pull/1072): Fix `get`/`set` as short method name in `object` (@tofpie)
+- [BUG #1077](https://github.com/boa-dev/boa/pull/1077): Fix panics from multiple borrows of `Map` (@joshwd36)
+- [BUG #1079](https://github.com/boa-dev/boa/pull/1079): Fix lexing escapes in string literal (@jevancc)
+- [BUG #1075](https://github.com/boa-dev/boa/pull/1075): Fix out-of-range panics of `Date` (@jevancc)
+- [BUG #1084](https://github.com/boa-dev/boa/pull/1084): Fix line terminator in string literal (@jevancc)
+- [BUG #1110](https://github.com/boa-dev/boa/pull/1110): Fix parsing floats panics and bugs (@jevancc)
+- [BUG #1202](https://github.com/boa-dev/boa/pull/1202): Fix a typo in `gc.rs` (@teymour-aldridge)
+- [BUG #1201](https://github.com/boa-dev/boa/pull/1201): Return optional value in `to_json` functions (@fermian)
+- [BUG #1223](https://github.com/boa-dev/boa/pull/1223): Update cli name in Readme (@sphinxc0re)
+- [BUG #1175](https://github.com/boa-dev/boa/pull/1175): Handle early errors for declarations in `StatementList` (@0x7D2B)
+- [BUG #1270](https://github.com/boa-dev/boa/pull/1270): Fix `Context::register_global_function()` (@HalidOdat)
+- [BUG #1135](https://github.com/boa-dev/boa/pull/1135): Fix of instructions.rs comment, to_precision impl and rfc changes (@NathanRoyer)
+- [BUG #1272](https://github.com/boa-dev/boa/pull/1272): Fix `Array.prototype.filter` (@tofpie & @Razican)
+- [BUG #1280](https://github.com/boa-dev/boa/pull/1280): Fix slice index panic in `add_rest_param` (@0x7D2B)
+- [BUG #1284](https://github.com/boa-dev/boa/pull/1284): Fix `GcObject` `to_json` mutable borrow panic (@0x7D2B)
+- [BUG #1283](https://github.com/boa-dev/boa/pull/1283): Fix panic in regex execution (@0x7D2B)
+- [BUG #1286](https://github.com/boa-dev/boa/pull/1286): Fix construct usage (@0x7D2B)
+- [BUG #1288](https://github.com/boa-dev/boa/pull/1288): Fixed `Math.hypot.length` bug (@moadmmh)
+- [BUG #1285](https://github.com/boa-dev/boa/pull/1285): Fix environment record panics (@0x7D2B)
+- [BUG #1302](https://github.com/boa-dev/boa/pull/1302): Fix VM branch (@jasonwilliams)
+
+Internal Improvements:
+
+- [INTERNAL #1067](https://github.com/boa-dev/boa/pull/1067): Change `Realm::global_object` field from `Value` to `GcObject` (@RageKnify)
+- [INTERNAL #1048](https://github.com/boa-dev/boa/pull/1048): VM Trace output fixes (@jasonwilliams)
+- [INTERNAL #1109](https://github.com/boa-dev/boa/pull/1109): Define all property methods of constructors (@RageKnify)
+- [INTERNAL #1126](https://github.com/boa-dev/boa/pull/1126): Remove unnecessary wraps for non built-in functions (@RageKnify)
+- [INTERNAL #1044](https://github.com/boa-dev/boa/pull/1044): Removed duplicated code in `vm.run` using macros (@stephanemagnenat)
+- [INTERNAL #1103](https://github.com/boa-dev/boa/pull/1103): Lazy evaluation for cooked template string (@jevancc)
+- [INTERNAL #1156](https://github.com/boa-dev/boa/pull/1156): Rework environment records (@0x7D2B)
+- [INTERNAL #1181](https://github.com/boa-dev/boa/pull/1181): Merge `Const`/`Let`/`Var` `DeclList` into `DeclarationList` (@0x7D2B)
+- [INTERNAL #1234](https://github.com/boa-dev/boa/pull/1234): Separate `Symbol` builtin (@HalidOdat)
+- [INTERNAL #1131](https://github.com/boa-dev/boa/pull/1131): Make environment methods take `&mut Context` (@HalidOdat)
+- [INTERNAL #1271](https://github.com/boa-dev/boa/pull/1271): Make `same_value` and `same_value_zero` static methods (@HalidOdat)
+- [INTERNAL #1276](https://github.com/boa-dev/boa/pull/1276): Cleanup (@Razican)
+- [INTERNAL #1279](https://github.com/boa-dev/boa/pull/1279): Add test comparison to Test262 result compare (@Razican)
+- [INTERNAL #1293](https://github.com/boa-dev/boa/pull/1293): Fix test262 comment formatting (@0x7D2B)
+- [INTERNAL #1294](https://github.com/boa-dev/boa/pull/1294): Don't consider panic fixes as "new failures" (@Razican)
+
+# [0.11.0 (2021-01-14) - Faster Parsing & Better compliance](https://github.com/boa-dev/boa/compare/v0.10.0...v0.11.0)
+
+Feature Enhancements:
+
+- [FEATURE #836](https://github.com/boa-dev/boa/pull/836):
+ Async/Await parse (@Lan2u)
+- [FEATURE #704](https://github.com/boa-dev/boa/pull/704):
+ Implement for...of loops (@joshwd36)
+- [FEATURE #770](https://github.com/boa-dev/boa/pull/770):
+ Support for symbols as property keys for `Object.defineProperty` (@georgeroman)
+- [FEATURE #717](https://github.com/boa-dev/boa/pull/717):
+ Strict Mode Lex/Parse (@Lan2u)
+- [FEATURE #800](https://github.com/boa-dev/boa/pull/800):
+ Implement `console` crate feature - Put `console` object behind a feature flag (@HalidOdat)
+- [FEATURE #804](https://github.com/boa-dev/boa/pull/804):
+ Implement `EvalError` (@HalidOdat)
+- [FEATURE #805](https://github.com/boa-dev/boa/pull/805):
+ Implement `Function.prototype.call` (@RageKnify)
+- [FEATURE #806](https://github.com/boa-dev/boa/pull/806):
+ Implement `URIError` (@HalidOdat)
+- [FEATURE #811](https://github.com/boa-dev/boa/pull/811):
+ Implement spread operator using iterator (@croraf)
+- [FEATURE #844](https://github.com/boa-dev/boa/pull/844):
+ Allow UnaryExpression with prefix increment/decrement (@croraf)
+- [FEATURE #798](https://github.com/boa-dev/boa/pull/798):
+ Implement Object.getOwnPropertyDescriptor() and Object.getOwnPropertyDescriptors() (@JohnDoneth)
+- [FEATURE #847](https://github.com/boa-dev/boa/pull/847):
+ Implement Map.prototype.entries() (@croraf)
+- [FEATURE #859](https://github.com/boa-dev/boa/pull/859):
+ Implement spec compliant Array constructor (@georgeroman)
+- [FEATURE #874](https://github.com/boa-dev/boa/pull/874):
+ Implement Map.prototype.values and Map.prototype.keys (@croraf)
+- [FEATURE #877](https://github.com/boa-dev/boa/pull/877):
+ Implement Function.prototype.apply (@georgeroman)
+- [FEATURE #908](https://github.com/boa-dev/boa/pull/908):
+ Implementation of `instanceof` operator (@morrien)
+- [FEATURE #935](https://github.com/boa-dev/boa/pull/935):
+ Implement String.prototype.codePointAt (@devinus)
+- [FEATURE #961](https://github.com/boa-dev/boa/pull/961):
+ Implement the optional `space` parameter in `JSON.stringify` (@tofpie)
+- [FEATURE #962](https://github.com/boa-dev/boa/pull/962):
+ Implement Number.prototype.toPrecision (@NathanRoyer)
+- [FEATURE #983](https://github.com/boa-dev/boa/pull/983):
+ Implement Object.prototype.isPrototypeOf (@tofpie)
+- [FEATURE #995](https://github.com/boa-dev/boa/pull/995):
+ Support Numeric separators (@tofpie)
+- [FEATURE #1013](https://github.com/boa-dev/boa/pull/1013):
+ Implement nullish coalescing (?? and ??=) (@tofpie)
+- [FEATURE #987](https://github.com/boa-dev/boa/pull/987):
+ Implement property accessors (@tofpie)
+- [FEATURE #1018](https://github.com/boa-dev/boa/pull/1018):
+ Implement logical assignment operators (&&= and ||=) (@tofpie)
+- [FEATURE #1019](https://github.com/boa-dev/boa/pull/1019):
+ Implement early errors for non-assignable nodes in assignment (@tofpie)
+- [FEATURE #1020](https://github.com/boa-dev/boa/pull/1020):
+ Implement Symbol.toPrimitive (@tofpie)
+- [FEATURE #976](https://github.com/boa-dev/boa/pull/976):
+ Implement for..in (@tofpie)
+- [FEATURE #1026](https://github.com/boa-dev/boa/pull/1026):
+ Implement String.prototype.split (@jevancc)
+- [FEATURE #1047](https://github.com/boa-dev/boa/pull/1047):
+ Added syntax highlighting for numbers, identifiers and template literals (@Razican)
+- [FEATURE #1003](https://github.com/boa-dev/boa/pull/1003):
+ Improve Unicode support for identifier names (@jevancc)
+
+Bug Fixes:
+
+- [BUG #782](https://github.com/boa-dev/boa/pull/782):
+ Throw TypeError if regexp is passed to startsWith, endsWith, includes (@pt2121)
+- [BUG #788](https://github.com/boa-dev/boa/pull/788):
+ Fixing a duplicated attribute in test262 results (@Razican)
+- [BUG #790](https://github.com/boa-dev/boa/pull/790):
+ Throw RangeError when BigInt division by zero occurs (@JohnDoneth)
+- [BUG #785](https://github.com/boa-dev/boa/pull/785):
+ Fix zero argument panic in JSON.parse() (@JohnDoneth)
+- [BUG #749](https://github.com/boa-dev/boa/pull/749):
+ Fix Error constructors to return rather than throw (@RageKnify)
+- [BUG #777](https://github.com/boa-dev/boa/pull/777):
+ Fix cyclic JSON.stringify / primitive conversion stack overflows (@vgel)
+- [BUG #799](https://github.com/boa-dev/boa/pull/799):
+ Fix lexer span panic with carriage return (@vgel)
+- [BUG #812](https://github.com/boa-dev/boa/pull/812):
+ Fix 2 bugs that caused Test262 to fail (@RageKnify)
+- [BUG #826](https://github.com/boa-dev/boa/pull/826):
+ Fix tokenizing Unicode escape sequence in string literal (@HalidOdat)
+- [BUG #825](https://github.com/boa-dev/boa/pull/825):
+ calling "new" on a primitive value throw a type error (@dlemel8)
+- [BUG #853](https://github.com/boa-dev/boa/pull/853)
+ Handle invalid Unicode code point in the string literals (@jevancc)
+- [BUG #870](https://github.com/boa-dev/boa/pull/870)
+ Fix JSON stringification for fractional numbers (@georgeroman)
+- [BUG #807](https://github.com/boa-dev/boa/pull/807):
+ Make boa::parse emit error on invalid input, not panic (@georgeroman)
+- [BUG #880](https://github.com/boa-dev/boa/pull/880):
+ Support more number literals in BigInt's from string constructor (@georgeroman)
+- [BUG #885](https://github.com/boa-dev/boa/pull/885):
+ Fix `BigInt.prototype.toString()` radix checks (@georgeroman)
+- [BUG #882](https://github.com/boa-dev/boa/pull/882):
+ Fix (panic) remainder by zero (@georgeroman)
+- [BUG #884](https://github.com/boa-dev/boa/pull/884):
+ Fix some panics related to BigInt operations (@georgeroman)
+- [BUG #888](https://github.com/boa-dev/boa/pull/888):
+ Fix some panics in String.prototype properties (@georgeroman)
+- [BUG #902](https://github.com/boa-dev/boa/pull/902):
+ Fix Accessors panics (@HalidOdat)
+- [BUG #959](https://github.com/boa-dev/boa/pull/959):
+ Fix Unicode character escape sequence parsing (@tofpie)
+- [BUG #964](https://github.com/boa-dev/boa/pull/964):
+ Fix single line comment lexing with CRLF line ending (@tofpie)
+- [BUG #919](https://github.com/boa-dev/boa/pull/919):
+ Reduce the number of `Array`-related panics (@jakubfijalkowski)
+- [BUG #968](https://github.com/boa-dev/boa/pull/968):
+ Fix unit tests that can be failed due to daylight saving time (@tofpie)
+- [BUG #972](https://github.com/boa-dev/boa/pull/972):
+ Fix enumerable attribute on array length property (@tofpie)
+- [BUG #974](https://github.com/boa-dev/boa/pull/974):
+ Fix enumerable attribute on string length property (@tofpie)
+- [BUG #981](https://github.com/boa-dev/boa/pull/981):
+ Fix prototypes for Number, String and Boolean (@tofpie)
+- [BUG #999](https://github.com/boa-dev/boa/pull/999):
+ Fix logical expressions evaluation (@tofpie)
+- [BUG #1001](https://github.com/boa-dev/boa/pull/1001):
+ Fix comparison with infinity (@tofpie)
+- [BUG #1004](https://github.com/boa-dev/boa/pull/1004):
+ Fix panics surrounding `Object.prototype.hasOwnProperty()` (@HalidOdat)
+- [BUG #1005](https://github.com/boa-dev/boa/pull/1005):
+ Fix panics surrounding `Object.defineProperty()` (@HalidOdat)
+- [BUG #1021](https://github.com/boa-dev/boa/pull/1021):
+ Fix spread in new and call expressions (@tofpie)
+- [BUG #1023](https://github.com/boa-dev/boa/pull/1023):
+ Fix attributes on properties of functions and constructors (@tofpie)
+- [BUG #1017](https://github.com/boa-dev/boa/pull/1017):
+ Don't panic when function parameters share names (@AnnikaCodes)
+- [BUG #1024](https://github.com/boa-dev/boa/pull/1024):
+ Fix delete when the property is not configurable (@tofpie)
+- [BUG #1027](https://github.com/boa-dev/boa/pull/1027):
+ Supress regress errors on invalid escapes for regex (@jasonwilliams
+- [BUG #1031](https://github.com/boa-dev/boa/pull/1031):
+ Fixed some extra regex panics (@Razican)
+- [BUG #1049](https://github.com/boa-dev/boa/pull/1049):
+ Support overriding the `arguments` variable (@AnnikaCodes)
+- [BUG #1050](https://github.com/boa-dev/boa/pull/1050):
+ Remove panic on named capture groups (@Razican)
+- [BUG #1046](https://github.com/boa-dev/boa/pull/1046):
+ Remove a few different panics (@Razican)
+- [BUG #1051](https://github.com/boa-dev/boa/pull/1051):
+ Fix parsing of arrow functions with 1 argument (@Lan2u)
+- [BUG #1045](https://github.com/boa-dev/boa/pull/1045):
+ Add newTarget to construct (@tofpie)
+- [BUG #659](https://github.com/boa-dev/boa/pull/659):
+ Error handling in environment (@54k1)
+
+Internal Improvements:
+
+- [INTERNAL #735](https://github.com/boa-dev/boa/pull/735):
+ Move exec implementations together with AST node structs (@georgeroman)
+- [INTERNAL #724](https://github.com/boa-dev/boa/pull/724):
+ Ignore tests for code coverage count (@HalidOdat)
+- [INTERNAL #768](https://github.com/boa-dev/boa/pull/768)
+ Update the benchmark Github action (@Razican)
+- [INTERNAL #722](https://github.com/boa-dev/boa/pull/722):
+ `ConstructorBuilder`, `ObjectInitializer`, cache standard objects and fix global object attributes (@HalidOdat)
+- [INTERNAL #783](https://github.com/boa-dev/boa/pull/783):
+ New test262 results format (This also reduces the payload size for the website) (@Razican)
+- [INTERNAL #787](https://github.com/boa-dev/boa/pull/787):
+ Refactor ast/node/expression into ast/node/call and ast/node/new (@croraf)
+- [INTERNAL #802](https://github.com/boa-dev/boa/pull/802):
+ Make `Function.prototype` a function (@HalidOdat)
+- [INTERNAL #746](https://github.com/boa-dev/boa/pull/746):
+ Add Object.defineProperties and handle props argument in Object.create (@dvtkrlbs)
+- [INTERNAL #774](https://github.com/boa-dev/boa/pull/774):
+ Switch from `regex` to `regress` for ECMA spec-compliant regex implementation (@neeldug)
+- [INTERNAL #794](https://github.com/boa-dev/boa/pull/794):
+ Refactor `PropertyDescriptor` (Improved performance) (@HalidOdat)
+- [INTERNAL #824](https://github.com/boa-dev/boa/pull/824):
+ [parser Expression] minor expression macro simplification (@croraf)
+- [INTERNAL #833](https://github.com/boa-dev/boa/pull/833):
+ Using unstable sort for sorting keys on `to_json()` for GC objects (@Razican)
+- [INTERNAL #837](https://github.com/boa-dev/boa/pull/837):
+ Set default-run to `boa` removing need for `--bin` (@RageKnify)
+- [INTERNAL #841](https://github.com/boa-dev/boa/pull/841):
+ Minor refactor and rename in eval() method (@croraf)
+- [INTERNAL #840](https://github.com/boa-dev/boa/pull/840):
+ fix(profiler): update profiler to match current measureme api (@neeldug)
+- [INTERNAL #838](https://github.com/boa-dev/boa/pull/838):
+ style(boa): minor cleanup (@neeldug)
+- [INTERNAL #869](https://github.com/boa-dev/boa/pull/869):
+ Updated cache in workflows (@Razican)
+- [INTERNAL #873](https://github.com/boa-dev/boa/pull/873)
+ Removed cache from MacOS builds (@Razican)
+- [INTERNAL #835](https://github.com/boa-dev/boa/pull/835):
+ Move `Object` internal object methods to `GcObject` (@HalidOdat)
+- [INTERNAL #886](https://github.com/boa-dev/boa/pull/886):
+ Support running a specific test/suite in boa_tester (@georgeroman)
+- [INTERNAL #901](https://github.com/boa-dev/boa/pull/901):
+ Added "unimplemented" syntax errors (@Razican)
+- [INTERNAL #911](https://github.com/boa-dev/boa/pull/911):
+ Change Symbol hash to `u64` (@HalidOdat)
+- [INTERNAL #912](https://github.com/boa-dev/boa/pull/912):
+ Feature `Context::register_global_property()` (@HalidOdat)
+- [INTERNAL #913](https://github.com/boa-dev/boa/pull/913):
+ Added check to ignore semicolon in parser (@AngelOnFira)
+- [INTERNAL #915](https://github.com/boa-dev/boa/pull/915):
+ Improve lexer by make cursor iterate over bytes (@jevancc)
+- [INTERNAL #952](https://github.com/boa-dev/boa/pull/952):
+ Upgraded rustyline and test262 (@Razican)
+- [INTERNAL #960](https://github.com/boa-dev/boa/pull/960):
+ Fix unresolved links in documentation (@tofpie)
+- [INTERNAL #979](https://github.com/boa-dev/boa/pull/979):
+ Read file input in bytes instead of string (@tofpie)
+- [INTERNAL #1014](https://github.com/boa-dev/boa/pull/1014):
+ StatementList: Rename `statements` to `items` (@AnnikaCodes)
+- [INTERNAL #860](https://github.com/boa-dev/boa/pull/860):
+ Investigation into ByteCode Interpreter (@jasonwilliams)
+- [INTERNAL #1042](https://github.com/boa-dev/boa/pull/1042):
+ Add receiver parameter to object internal methods (@tofpie)
+- [INTERNAL #1030](https://github.com/boa-dev/boa/pull/1030):
+ VM: Implement variable declaration (var, const, and let) (@AnnikaCodes)
+- [INTERNAL #1010](https://github.com/boa-dev/boa/pull/1010):
+ Modify environment binding behaviour of function (@54k1)
+
+# [0.10.0 (2020-09-29) - New Lexer & Test 262 Harness](https://github.com/boa-dev/boa/compare/v0.9.0...v0.10.0)
+
+Feature Enhancements:
+
+- [FEATURE #524](https://github.com/boa-dev/boa/pull/525):
+ Implement remaining `Math` methods (@mr-rodgers)
+- [FEATURE #562](https://github.com/boa-dev/boa/pull/562):
+ Implement remaining `Number` methods (@joshwd36)
+- [FEATURE #536](https://github.com/boa-dev/boa/pull/536):
+ Implement `SyntaxError` (@HalidOdat)
+- [FEATURE #543](https://github.com/boa-dev/boa/pull/543):
+ Implements `Object.create` builtin method (@croraf)
+- [FEATURE #492](https://github.com/boa-dev/boa/pull/492):
+ Switch to [rustyline](https://github.com/kkawakam/rustyline) for the CLI (@IovoslavIovchev & @Razican)
+- [FEATURE #595](https://github.com/boa-dev/boa/pull/595):
+ Added syntax highlighting for strings in REPL (@HalidOdat)
+- [FEATURE #586](https://github.com/boa-dev/boa/pull/586):
+ Better error formatting and cli color (@HalidOdat)
+- [FEATURE #590](https://github.com/boa-dev/boa/pull/590):
+ Added keyword and operator colors and matching bracket validator to REPL (@HalidOdat)
+- [FEATURE #555](https://github.com/boa-dev/boa/pull/555):
+ Implement Array.prototype.reduce (@benjaminflin)
+- [FEATURE #550](https://github.com/boa-dev/boa/pull/550):
+ Initial implementation of Map() (@joshwd36 & @HalidOdat)
+- [FEATURE #579](https://github.com/boa-dev/boa/pull/579):
+ Implement Array.prototype.reduceRight (@benjaminflin)
+- [FEATURE #585](https://github.com/boa-dev/boa/pull/587):
+ Implement Well-Known Symbols (@joshwd36)
+- [FEATURE #589](https://github.com/boa-dev/boa/pull/589):
+ Implement the comma operator (@KashParty)
+- [FEATURE #341](https://github.com/boa-dev/boa/pull/590):
+ Ability to create multiline blocks in boa shell (@HalidOdat)
+- [FEATURE #252](https://github.com/boa-dev/boa/pull/596):
+ Implement `Date` (@jcdickinson)
+- [FEATURE #711](https://github.com/boa-dev/boa/pull/711):
+ Add support for >>>= (@arpit-saxena)
+- [FEATURE #549](https://github.com/boa-dev/boa/pull/549):
+ Implement label statements (@jasonwilliams)
+- [FEATURE #373](https://github.com/boa-dev/boa/pull/373):
+ Introduce PropertyKey for field acces (@RageKnify)
+- [FEATURE #627](https://github.com/boa-dev/boa/pull/627):
+ Feature native class objects (`NativeObject` and `Class` traits) (@HalidOdat)
+- [FEATURE #694](https://github.com/boa-dev/boa/pull/694):
+ Feature `gc` module (@HalidOdat)
+- [FEATURE #656](https://github.com/boa-dev/boa/pull/656):
+ Feature `Context` (@HalidOdat)
+- [FEATURE #673](https://github.com/boa-dev/boa/pull/673):
+ Add `#[track_caller]` to `GcObject` methods that can panic (@HalidOdat)
+- [FEATURE #661](https://github.com/boa-dev/boa/pull/661):
+ Add documentation to `GcObject` methods (@HalidOdat)
+- [FEATURE #662](https://github.com/boa-dev/boa/pull/662):
+ Implement `std::error::Error` for `GcObject` borrow errors (@HalidOdat)
+- [FEATURE #660](https://github.com/boa-dev/boa/pull/660):
+ Make `GcObject::contruct` not take 'this' (@HalidOdat)
+- [FEATURE #654](https://github.com/boa-dev/boa/pull/654):
+ Move `require_object_coercible` to `Value` (@HalidOdat)
+- [FEATURE #603](https://github.com/boa-dev/boa/pull/603):
+ Index `PropertyKey`, `Object` iterators and symbol support (@HalidOdat)
+- [FEATURE #637](https://github.com/boa-dev/boa/pull/637):
+ Feature `boa::Result` (@HalidOdat)
+- [FEATURE #625](https://github.com/boa-dev/boa/pull/625):
+ Moved value operations from `Interpreter` to `Value` (@HalidOdat)
+- [FEATURE #638](https://github.com/boa-dev/boa/pull/638):
+ Changed to `Value::to_*int32` => `Value::to_*32` (@HalidOdat)
+
+Bug Fixes:
+
+- [BUG #405](https://github.com/boa-dev/boa/issues/405):
+ Fix json.stringify symbol handling (@n14little)
+- [BUG #520](https://github.com/boa-dev/boa/pull/520):
+ Fix all `Value` operations and add unsigned shift right (@HalidOdat)
+- [BUG #529](https://github.com/boa-dev/boa/pull/529):
+ Refactor exec/expression into exec/call and exec/new (@croraf)
+- [BUG #510](https://github.com/boa-dev/boa/issues/510):
+ [[Call]] calling an undefined method does not throw (@joshwd36)
+- [BUG #493](https://github.com/boa-dev/boa/pull/493):
+ Use correct exponential representation for rational values (@Tropid)
+- [BUG #572](https://github.com/boa-dev/boa/pull/572):
+ Spec Compliant `Number.prototype.toString()`, better `Number` object formating and `-0` (@HalidOdat)
+- [BUG #599](https://github.com/boa-dev/boa/pull/599):
+ Fixed `String.prototype.indexOf()` bug, when the search string is empty (@HalidOdat)
+- [BUG #615](https://github.com/boa-dev/boa/issues/615):
+ Fix abstract relational comparison operators (@HalidOdat)
+- [BUG #608](https://github.com/boa-dev/boa/issues/608):
+ `Debug::fmt` Causes Causes a Stack Overflow (@jcdickinson)
+- [BUG #532](https://github.com/boa-dev/boa/issues/532)
+ [builtins - Object] Object.getPrototypeOf returning incorrectly (@54k1)
+- [BUG #533](https://github.com/boa-dev/boa/issues/533)
+ [exec - function] function.prototype doesn't have own constructor property pointing to this function (@54k1)
+- [BUG #641](https://github.com/boa-dev/boa/issues/641)
+ Test new_instance_should_point_to_prototype is not checked correctly (@54k1)
+- [BUG #644](https://github.com/boa-dev/boa/pull/645)
+ `undefined` constants panic on execution (@jcdickinson)
+- [BUG #631](https://github.com/boa-dev/boa/pull/645):
+ Unexpected result when applying typeof to undefined value (@jcdickinson)
+- [BUG #667](https://github.com/boa-dev/boa/pull/667):
+ Fix panic when calling function that mutates itself (@dvtkrlbs)
+- [BUG #668](https://github.com/boa-dev/boa/pull/668):
+ Fix clippy on Nightly (@dvtkrlbs)
+- [BUG #582](https://github.com/boa-dev/boa/pull/582):
+ Make `String.prototype.repeat()` ECMAScript specification compliant (@HalidOdat)
+- [BUG #541](https://github.com/boa-dev/boa/pull/541):
+ Made all `Math` methods spec compliant (@HalidOdat)
+- [BUG #597](https://github.com/boa-dev/boa/pull/597):
+ Made `String.prototype.indexOf` spec compliant. (@HalidOdat)
+- [BUG #598](https://github.com/boa-dev/boa/pull/598):
+ Made `String.prototype.lastIndexOf()` spec compliant (@HalidOdat)
+- [BUG #583](https://github.com/boa-dev/boa/pull/583):
+ Fix string prototype `trim` methods (@HalidOdat)
+- [BUG #728](https://github.com/boa-dev/boa/pull/728):
+ Fix bug when setting the length on String objects (@jasonwilliams)
+- [BUG #710](https://github.com/boa-dev/boa/pull/710):
+ Fix panic when a self mutating function is constructing an object (@HalidOdat)
+- [BUG #699](https://github.com/boa-dev/boa/pull/699):
+ Fix `Value::to_json` order of items in array (@sele9)
+- [BUG #610](https://github.com/boa-dev/boa/pull/610):
+ Fix: `String.prototype.replace` substitutions (@RageKnify)
+- [BUG #645](https://github.com/boa-dev/boa/pull/645):
+ Fix undefined constant expression evaluation (@jcdickinson)
+- [BUG #643](https://github.com/boa-dev/boa/pull/643):
+ Change default return type from null to undefined (@54k1)
+- [BUG #642](https://github.com/boa-dev/boa/pull/642):
+ Missing `constructor` field in ordinary functions (@54k1)
+- [BUG #604](https://github.com/boa-dev/boa/pull/604):
+ Missing `__proto__` field in functions instances (@54k1)
+- [BUG #561](https://github.com/boa-dev/boa/pull/561):
+ Throw a `TypeError` when a non-object is called (@joshwd36)
+- [BUG #748](https://github.com/boa-dev/boa/pull/748):
+ Fix parse error throwing a `TypeError`, instead of `SyntaxError` (@iamsaquib8)
+- [BUG #737](https://github.com/boa-dev/boa/pull/737):
+ Make `Object.toString()` spec compliant (@RageKnify)
+
+Internal Improvements:
+
+- [INTERNAL #567](https://github.com/boa-dev/boa/pull/567):
+ Add ECMAScript test suite (test262) (@Razican)
+- [INTERNAL #559](https://github.com/boa-dev/boa/pull/559):
+ New Lexer (@Lan2u @HalidOdat @Razican)
+- [INTERNAL #712](https://github.com/boa-dev/boa/pull/712):
+ Refactor: `Value::to_object` to return `GcObject` (@RageKnify)
+- [INTERNAL #544](https://github.com/boa-dev/boa/pull/544):
+ Removed `console`s dependency of `InternalState` (@HalidOdat)
+- [INTERNAL #556](https://github.com/boa-dev/boa/pull/556):
+ Added benchmark for goal symbol switching (@Razican)
+- [INTERNAL #578](https://github.com/boa-dev/boa/pull/580):
+ Extract `prototype` from internal slots (@HalidOdat)
+- [INTERNAL #553](https://github.com/boa-dev/boa/pull/553):
+ Refactor Property Descriptor flags (@HalidOdat)
+- [INTERNAL #592](https://github.com/boa-dev/boa/pull/592):
+ `RegExp` specialization (@HalidOdat)
+- [INTERNAL #626](https://github.com/boa-dev/boa/pull/626):
+ Refactor `Function` (@HalidOdat @Razican)
+- [INTERNAL #564](https://github.com/boa-dev/boa/pull/581):
+ Add benchmarks for "uglified" JS (@neeldug)
+- [INTERNAL #706](https://github.com/boa-dev/boa/pull/706):
+ Cache well known symbols (@HalidOdat)
+- [INTERNAL #723](https://github.com/boa-dev/boa/pull/723):
+ Add fast path for string concatenation (@RageKnify)
+- [INTERNAL #689](https://github.com/boa-dev/boa/pull/689):
+ Move `object` module to root (@HalidOdat)
+- [INTERNAL #684](https://github.com/boa-dev/boa/pull/684):
+ Move `property` module to root (@HalidOdat)
+- [INTERNAL #674](https://github.com/boa-dev/boa/pull/674):
+ Move `value` module to root (@HalidOdat)
+- [INTERNAL #693](https://github.com/boa-dev/boa/pull/693):
+ Rename `Object::prototype()` and `Object::set_prototype()` (@RageKnify)
+- [INTERNAL #665](https://github.com/boa-dev/boa/pull/665):
+ `approx_eq!` macro for `expm1` tests. (@neeldung)
+- [INTERNAL #581](https://github.com/boa-dev/boa/pull/581):
+ Added CLEAN_JS and MINI_JS benches (@neeldung)
+- [INTERNAL #640](https://github.com/boa-dev/boa/pull/640):
+ Benchmark refactor (@neeldung)
+- [INTERNAL #635](https://github.com/boa-dev/boa/pull/635):
+ Add missing ops to exec module (@jarredholman)
+- [INTERNAL #616](https://github.com/boa-dev/boa/pull/616):
+ Remove `Value::as_num_to_power()` (@HalidOdat)
+- [INTERNAL #601](https://github.com/boa-dev/boa/pull/601):
+ Removed internal_slots from object (@HalidOdat)
+- [INTERNAL #560](https://github.com/boa-dev/boa/pull/560):
+ Added benchmarks for full program execution (@Razican)
+- [INTERNAL #547](https://github.com/boa-dev/boa/pull/547):
+ Merged `create` into `init` for builtins (@HalidOdat)
+- [INTERNAL #538](https://github.com/boa-dev/boa/pull/538):
+ Cleanup and added test for `String.prototype.concat` (@HalidOdat)
+- [INTERNAL #739](https://github.com/boa-dev/boa/pull/739):
+ Add release action (@jasonwilliams)
+- [INTERNAL #744](https://github.com/boa-dev/boa/pull/744):
+ Add MacOS check and test to CI (@neeldug)
+
+# [# 0.9.0 (2020-07-03) - Move to Organisation, 78% faster execution time](https://github.com/boa-dev/boa/compare/v0.8.0...v0.9.0)
+
+Feature Enhancements:
+
+- [FEATURE #414](https://github.com/boa-dev/boa/issues/414):
+ Implement `Number` object constants (@Lan2u) (@HalidOdat)
+- [FEATURE #345](https://github.com/boa-dev/boa/issues/345):
+ Implement the optional `replacer` parameter in `JSON.stringify( value[, replacer [, space] ] )` (@n14little)
+- [FEATURE #480](https://github.com/boa-dev/boa/issues/480):
+ Implement global `Infinity` property (@AnirudhKonduru)
+- [FEATURE #410](https://github.com/boa-dev/boa/pull/410):
+ Add support for the reviver function to JSON.parse (@abhijeetbhagat)
+- [FEATURE #425](https://github.com/boa-dev/boa/pull/425):
+ Specification compliant `ToString` (`to_string`) (@HalidOdat)
+- [FEATURE #442](https://github.com/boa-dev/boa/pull/442):
+ Added `TypeError` implementation (@HalidOdat)
+- [FEATURE #450](https://github.com/boa-dev/boa/pull/450):
+ Specification compliant `ToBigInt` (`to_bigint`) (@HalidOdat)
+- [FEATURE #455](https://github.com/boa-dev/boa/pull/455):
+ TemplateLiteral Basic lexer implementation (@croraf)
+- [FEATURE #447](https://github.com/boa-dev/boa/issues/447):
+ parseInt, parseFloat implementation (@Lan2u)
+- [FEATURE #468](https://github.com/boa-dev/boa/pull/468):
+ Add BigInt.asIntN() and BigInt.asUintN() functions (@Tropid)
+- [FEATURE #428](https://github.com/boa-dev/boa/issues/428):
+ [Feature Request] - Create benchmark for Array manipulation (@abhijeetbhagat)
+- [FEATURE #439](https://github.com/boa-dev/boa/issues/439):
+ Implement break handling in switch statements (@Lan2u)
+- [FEATURE #301](https://github.com/boa-dev/boa/issues/301):
+ Implementing the switch statement in the new parser (@Lan2u)
+- [FEATURE #120](https://github.com/boa-dev/boa/issues/120):
+ Implement `globalThis` (@zanayr)
+- [FEATURE #513](https://github.com/boa-dev/boa/issues/513):
+ Implement `Object.is()` method (@tylermorten)
+- [FEATURE #481](https://github.com/boa-dev/boa/issues/481):
+ Implement global `undefined` property (@croraf)
+
+Bug Fixes:
+
+- [BUG #412](https://github.com/boa-dev/boa/pull/412):
+ Fixed parsing if statement without else block preceded by a newline (@HalidOdat)
+- [BUG #409](https://github.com/boa-dev/boa/pull/409):
+ Fix function object constructable/callable (@HalidOdat)
+- [BUG #403](https://github.com/boa-dev/boa/issues/403)
+ `Value::to_json()` does not handle `undefined` correctly (@n14little)
+- [BUG #443](https://github.com/boa-dev/boa/issues/443):
+ HasOwnProperty should call GetOwnProperty and not GetProperty (@n14little)
+- [BUG #210](https://github.com/boa-dev/boa/issues/210):
+ builtinfun.length undefined (@Croraf)
+- [BUG #466](https://github.com/boa-dev/boa/issues/466):
+ Change `ToPrimitive()` (`to_primitive()`) hint to be an enum, instead of string (@HalidOdat)
+- [BUG #421](https://github.com/boa-dev/boa/issues/421):
+ `NaN` is lexed as a number, not as an identifier (@croraf)
+- [BUG #454](https://github.com/boa-dev/boa/issues/454):
+ Function declaration returns the function, it should return `undefined` (@croraf)
+- [BUG #482](https://github.com/boa-dev/boa/issues/482):
+ Field access should propagate the exception (`Err(_)`) (@neeldug)
+- [BUG #463](https://github.com/boa-dev/boa/issues/463):
+ Use of undefined variable should throw an error (@croraf)
+- [BUG #502](https://github.com/boa-dev/boa/pull/502):
+ Fixed global objects initialization order (@HalidOdat)
+- [BUG #509](https://github.com/boa-dev/boa/issues/509):
+ JSON.stringify(undefined) panics (@n14little)
+- [BUG #514](https://github.com/boa-dev/boa/issues/514):
+ Clean up `Math` Methods (@n14little)
+- [BUG #511](https://github.com/boa-dev/boa/issues/511):
+ [Call] Usage of "this" in methods is not supported (@jasonwilliams)
+
+Internal Improvements
+
+- [INTERNAL #435](https://github.com/boa-dev/boa/issues/435):
+ Optimize type comparisons (@Lan2u)
+- [INTERNAL #296](https://github.com/boa-dev/boa/issues/296):
+ using measureme for profiling the interpreter (@jasonwilliams)
+- [INTERNAL #419](https://github.com/boa-dev/boa/pull/419):
+ Object specialization (fast paths for many objects) (@HalidOdat)
+- [INTERNAL #392](https://github.com/boa-dev/boa/pull/392):
+ Execution and Node modulization (@Razican)
+- [INTERNAL #465](https://github.com/boa-dev/boa/issues/465):
+ Refactoring Value (decouple `Gc` from `Value`) (@HalidOdat)
+- [INTERNAL #416](https://github.com/boa-dev/boa/pull/416) & [INTERNAL #423](https://github.com/boa-dev/boa/commit/c8218dd91ef3181e048e7a2659a4fbf8d53c7174):
+ Update links to boa-dev (@pedropaulosuzuki)
+- [INTERNAL #378](https://github.com/boa-dev/boa/issues/378):
+ Code Coverage! (@Lan2u)
+- [INTERNAL #431](https://github.com/boa-dev/boa/pull/431):
+ Updates to PR Benchmarks (@Razican)
+- [INTERNAL #427 #429 #430](https://github.com/boa-dev/boa/commit/64dbf13afd15f12f958daa87a3d236dc9af1a9aa):
+ Added new benchmarks (@Razican)
+
+# [# 0.8.0 (2020-05-23) - BigInt, Modularized Parser, Faster Hashing](https://github.com/boa-dev/boa/compare/v0.7.0...v0.8.0)
+
+`v0.8.0` brings more language implementations, such as do..while, function objects and also more recent EcmaScript additions, like BigInt.
+We have now moved the Web Assembly build into the `wasm` package, plus added a code of conduct for those contributing.
+
+The parser has been even more modularized in this release making it easier to add new parsing rules.
+
+Boa has migrated it's object implemention to FXHash which brings much improved results over the built-in Rust hashmaps (at the cost of less DOS Protection).
+
+Feature Enhancements:
+
+- [FEATURE #121](https://github.com/boa-dev/boa/issues/121):
+ `BigInt` Implemented (@HalidOdat)
+- [FEATURE #293](https://github.com/boa-dev/boa/pull/293):
+ Improved documentation of all modules (@HalidOdat)
+- [FEATURE #302](https://github.com/boa-dev/boa/issues/302):
+ Implement do..while loop (@ptasz3k)
+- [FEATURE #318](https://github.com/boa-dev/boa/pull/318):
+ Added continous integration for windows (@HalidOdat)
+- [FEATURE #290](https://github.com/boa-dev/boa/pull/290):
+ Added more build profiles (@Razican)
+- [FEATURE #323](https://github.com/boa-dev/boa/pull/323):
+ Aded more benchmarks (@Razican)
+- [FEATURE #326](https://github.com/boa-dev/boa/pull/326):
+ Rename Boa CLI (@sphinxc0re)
+- [FEATURE #312](https://github.com/boa-dev/boa/pull/312):
+ Added jemallocator for linux targets (@Razican)
+- [FEATURE #339](https://github.com/boa-dev/boa/pull/339):
+ Improved Method parsing (@muskuloes)
+- [FEATURE #352](https://github.com/boa-dev/boa/pull/352):
+ create boa-wasm package (@muskuloes)
+- [FEATURE #304](https://github.com/boa-dev/boa/pull/304):
+ Modularized parser
+- [FEATURE #141](https://github.com/boa-dev/boa/issues/141):
+ Implement function objects (@jasonwilliams)
+- [FEATURE #365](https://github.com/boa-dev/boa/issues/365):
+ Implement for loop execution (@Razican)
+- [FEATURE #356](https://github.com/boa-dev/boa/issues/356):
+ Use Fx Hash to speed up hash maps in the compiler (@Razican)
+- [FEATURE #321](https://github.com/boa-dev/boa/issues/321):
+ Implement unary operator execution (@akryvomaz)
+- [FEATURE #379](https://github.com/boa-dev/boa/issues/379):
+ Automatic auditing of Boa (@n14little)
+- [FEATURE #264](https://github.com/boa-dev/boa/issues/264):
+ Implement `this` (@jasonwilliams)
+- [FEATURE #395](https://github.com/boa-dev/boa/pull/395):
+ impl abstract-equality-comparison (@hello2dj)
+- [FEATURE #359](https://github.com/boa-dev/boa/issues/359):
+ impl typeof (@RestitutorOrbis)
+- [FEATURE #390](https://github.com/boa-dev/boa/pull/390):
+ Modularize try statement parsing (@abhijeetbhagat)
+
+Bug fixes:
+
+- [BUG #308](https://github.com/boa-dev/boa/issues/308):
+ Assignment operator not working in tests (a = a +1) (@ptasz3k)
+- [BUG #322](https://github.com/boa-dev/boa/issues/322):
+ Benchmarks are failing in master (@Razican)
+- [BUG #325](https://github.com/boa-dev/boa/pull/325):
+ Put JSON functions on the object, not the prototype (@coolreader18)
+- [BUG #331](https://github.com/boa-dev/boa/issues/331):
+ We only get `Const::Num`, never `Const::Int` (@HalidOdat)
+- [BUG #209](https://github.com/boa-dev/boa/issues/209):
+ Calling `new Array` with 1 argument doesn't work properly (@HalidOdat)
+- [BUG #266](https://github.com/boa-dev/boa/issues/266):
+ Panic assigning named function to variable (@Razican)
+- [BUG #397](https://github.com/boa-dev/boa/pull/397):
+ fix `NaN` is lexed as identifier, not as a number (@attliaLin)
+- [BUG #362](https://github.com/boa-dev/boa/pull/362):
+ Remove Monaco Editor Webpack Plugin and Manually Vendor Editor Workers (@subhankar-panda)
+- [BUG #406](https://github.com/boa-dev/boa/pull/406):
+ Dependency Upgrade (@Razican)
+- [BUG #407](https://github.com/boa-dev/boa/pull/407):
+ `String()` wasn't defaulting to empty string on call (@jasonwilliams)
+- [BUG #404](https://github.com/boa-dev/boa/pull/404):
+ Fix for 0 length new String(@tylermorten)
+
+Code Of Conduct:
+
+- [COC #384](https://github.com/boa-dev/boa/pull/384):
+ Code of conduct added (@Razican)
+
+Security:
+
+- [SEC #391](https://github.com/boa-dev/boa/pull/391):
+ run security audit daily at midnight. (@n14little)
+
+# [# 0.7.0 (2020-04-13) - New Parser is 67% faster](https://github.com/boa-dev/boa/compare/v0.6.0...v0.7.0)
+
+`v0.7.0` brings a REPL, Improved parser messages and a new parser!
+This is now the default behaviour of Boa, so running Boa without a file argument will bring you into a javascript shell.
+Tests have also been moved to their own files, we had a lot of tests in some modules so it was time to separate.
+
+## New Parser
+
+Most of the work in this release has been on rewriting the parser. A big task taken on by [HalidOdat](https://github.com/HalidOdat), [Razican](https://github.com/Razican) and [myself](https://github.com/jasonwilliams).
+
+The majority of the old parser was 1 big function (called [`parse`](https://github.com/boa-dev/boa/blob/019033eff066e8c6ba9456139690eb214a0bf61d/boa/src/syntax/parser.rs#L353)) which had some pattern matching on each token coming in.\
+The easy branches could generate expressions (which were basically AST Nodes), the more involved branches would recursively call into the same function, until eventually you had an expression generated.
+
+This only worked so far, eventually debugging parsing problems were difficult, also more bugs were being raised against the parser which couldn't be fixed.
+
+We decided to break the parser into more of a state-machine. The initial decision for this was inspired by [Fedor Indutny](https://github.com/indutny) who did a talk at (the last) JSConf EU about how he broke up the old node-parser to make it more maintanable. He goes into more detail here https://www.youtube.com/watch?v=x3k_5Mi66sY&feature=youtu.be&t=530
+
+The new parser has functions to match the states of parsing in the spec. For example https://tc39.es/ecma262/#prod-VariableDeclaration has a matching function `read_variable_declaration`. This not only makes it better to maintain but easier for new contributors to get involed, as following the parsing logic of the spec is easier than before.
+
+Once finished some optimisations were added by [HalidOdat](https://github.com/HalidOdat) to use references to the tokens instead of cloning them each time we take them from the lexer.\
+This works because the tokens live just as long as the parser operations do, so we don't need to copy the tokens.\
+What this brings is a huge performance boost, the parser is 67% faster than before!
+
+
+
+Feature enhancements:
+
+- [FEATURE #281](https://github.com/boa-dev/boa/pull/281):
+ Rebuild the parser (@jasonwilliams, @Razican, @HalidOdat)
+- [FEATURE #278](https://github.com/boa-dev/boa/pull/278):
+ Added the ability to dump the token stream or ast in bin. (@HalidOdat)
+- [FEATURE #253](https://github.com/boa-dev/boa/pull/253):
+ Implement Array.isArray (@cisen)
+- [FEATURE](https://github.com/boa-dev/boa/commit/edab5ca6cc10d13265f82fa4bc05d6b432a362fc)
+ Switch to normal output instead of debugged output (stdout/stdout) (@jasonwilliams)
+- [FEATURE #258](https://github.com/boa-dev/boa/pull/258):
+ Moved test modules to their own files (@Razican)
+- [FEATURE #267](https://github.com/boa-dev/boa/pull/267):
+ Add print & REPL functionality to CLI (@JohnDoneth)
+- [FEATURE #268](https://github.com/boa-dev/boa/pull/268):
+ Addition of forEach() (@jasonwilliams) (@xSke)
+- [FEATURE #262](https://github.com/boa-dev/boa/pull/262):
+ Implement Array.prototype.filter (@Nickforall)
+- [FEATURE #261](https://github.com/boa-dev/boa/pull/261):
+ Improved parser error messages (@Razican)
+- [FEATURE #277](https://github.com/boa-dev/boa/pull/277):
+ Add a logo to the project (@HalidOdat)
+- [FEATURE #260](https://github.com/boa-dev/boa/pull/260):
+ Add methods with f64 std equivelant to Math object (@Nickforall)
+
+Bug fixes:
+
+- [BUG #249](https://github.com/boa-dev/boa/pull/249):
+ fix(parser): handle trailing comma in object literals (@gomesalexandre)
+- [BUG #244](https://github.com/boa-dev/boa/pull/244):
+ Fixed more Lexer Panics (@adumbidiot)
+- [BUG #256](https://github.com/boa-dev/boa/pull/256):
+ Fixed comments lexing (@Razican)
+- [BUG #251](https://github.com/boa-dev/boa/issues/251):
+ Fixed empty returns (@Razican)
+- [BUG #272](https://github.com/boa-dev/boa/pull/272):
+ Fix parsing of floats that start with a zero (@Nickforall)
+- [BUG #240](https://github.com/boa-dev/boa/issues/240):
+ Fix parser panic
+- [BUG #273](https://github.com/boa-dev/boa/issues/273):
+ new Class().method() has incorrect precedence
+
+Documentation Updates:
+
+- [DOC #297](https://github.com/boa-dev/boa/pull/297):
+ Better user contributed documentation
+
+# [# 0.6.0 (2020-02-14) - Migration to Workspace Architecture + lexer/parser improvements](https://github.com/boa-dev/boa/compare/v0.5.1...v0.6.0)
+
+The lexer has had several fixes in this release, including how it parses numbers, scientific notation should be improved.
+On top of that the lexer no longer panics on errors including Syntax Errors (thanks @adumbidiot), instead you get some output on where the error happened.
+
+## Moving to a workspace architecture
+
+Boa offers both a CLI and a library, initially these were all in the same binary. The downside is
+those who want to embed boa as-is end up with all of the command-line dependencies.
+So the time has come to separate out the two, this is normal procedure, this should be analogous to ripgrep
+and the regex crate.
+Cargo has great support for workspaces, so this shouldn't be an issue.
+
+## Benchmarks
+
+We now have [benchmarks which run against master](https://boa-dev.github.io/boa/dev/bench)!
+Thanks to Github Actions these will run automatically a commit is merged.
+
+Feature enhancements:
+
+- [FEATURE #218](https://github.com/boa-dev/boa/pull/218):
+ Implement Array.prototype.toString (@cisen)
+- [FEATURE #216](https://github.com/boa-dev/boa/commit/85e9a3526105a600358bd53811e2b022987c6fc8):
+ Keep accepting new array elements after spread.
+- [FEATURE #220](https://github.com/boa-dev/boa/pull/220):
+ Documentation updates. (@croraf)
+- [FEATURE #226](https://github.com/boa-dev/boa/pull/226):
+ add parser benchmark for expressions. (@jasonwilliams)
+- [FEATURE #217](https://github.com/boa-dev/boa/pull/217):
+ String.prototype.replace() implemented
+- [FEATURE #247](https://github.com/boa-dev/boa/pull/247):
+ Moved to a workspace architecture (@Razican)
+
+Bug fixes:
+
+- [BUG #222](https://github.com/boa-dev/boa/pull/222):
+ Fixed clippy errors (@IovoslavIovchev)
+- [BUG #228](https://github.com/boa-dev/boa/pull/228):
+ [lexer: single-line-comment] Fix bug when single line comment is last line of file (@croraf)
+- [BUG #229](https://github.com/boa-dev/boa/pull/229):
+ Replace error throwing with panic in "Lexer::next()" (@croraf)
+- [BUG #232/BUG #238](https://github.com/boa-dev/boa/pull/232):
+ Clippy checking has been scaled right back to just Perf and Style (@jasonwilliams)
+- [BUG #227](https://github.com/boa-dev/boa/pull/227):
+ Array.prototype.toString should be called by ES value (@cisen)
+- [BUG #242](https://github.com/boa-dev/boa/pull/242):
+ Fixed some panics in the lexer (@adumbidiot)
+- [BUG #235](https://github.com/boa-dev/boa/pull/235):
+ Fixed arithmetic operations with no space (@gomesalexandre)
+- [BUG #245](https://github.com/boa-dev/boa/pull/245):
+ Fixed parsing of floats with scientific notation (@adumbidiot)
+
+# [# 0.5.1 (2019-12-02) - Rest / Spread (almost)](https://github.com/boa-dev/boa/compare/v0.5.0...v0.5.1)
+
+Feature enhancements:
+
+- [FEATURE #151](https://github.com/boa-dev/boa/issues/151):
+ Implement the Rest/Spread operator (functions and arrays).
+- [FEATURE #193](https://github.com/boa-dev/boa/issues/193):
+ Implement macro for setting builtin functions
+- [FEATURE #211](https://github.com/boa-dev/boa/pull/211):
+ Better Display support for all Objects (pretty printing)
+
+# [# 0.5.0 (2019-11-06) - Hacktoberfest Release](https://github.com/boa-dev/boa/compare/v0.4.0...v0.5.1)
+
+Feature enhancements:
+
+- [FEATURE #119](https://github.com/boa-dev/boa/issues/119):
+ Introduce realm struct to hold realm context and global object.
+- [FEATURE #89](https://github.com/boa-dev/boa/issues/89):
+ Implement exponentiation operator. Thanks @arbroween
+- [FEATURE #47](https://github.com/boa-dev/boa/issues/47):
+ Add tests for comments in source code. Thanks @Emanon42
+- [FEATURE #137](https://github.com/boa-dev/boa/issues/137):
+ Use Monaco theme for the demo page
+- [FEATURE #114](https://github.com/boa-dev/boa/issues/114):
+ String.match(regExp) is implemented (@muskuloes)
+- [FEATURE #115](https://github.com/boa-dev/boa/issues/115):
+ String.matchAll(regExp) is implemented (@bojan88)
+- [FEATURE #163](https://github.com/boa-dev/boa/issues/163):
+ Implement Array.prototype.every() (@letmutx)
+- [FEATURE #165](https://github.com/boa-dev/boa/issues/165):
+ Implement Array.prototype.find() (@letmutx)
+- [FEATURE #166](https://github.com/boa-dev/boa/issues/166):
+ Implement Array.prototype.findIndex() (@felipe-fg)
+- [FEATURE #39](https://github.com/boa-dev/boa/issues/39):
+ Implement block scoped variable declarations (@barskern)
+- [FEATURE #161](https://github.com/boa-dev/boa/pull/161):
+ Enable obj[key] = value syntax.
+- [FEATURE #179](https://github.com/boa-dev/boa/issues/179):
+ Implement the Tilde operator (@letmutx)
+- [FEATURE #189](https://github.com/boa-dev/boa/pull/189):
+ Implement Array.prototype.includes (incl tests) (@simonbrahan)
+- [FEATURE #180](https://github.com/boa-dev/boa/pull/180):
+ Implement Array.prototype.slice (@muskuloes @letmutx)
+- [FEATURE #152](https://github.com/boa-dev/boa/issues/152):
+ Short Function syntax (no arguments)
+- [FEATURE #164](https://github.com/boa-dev/boa/issues/164):
+ Implement Array.prototype.fill() (@bojan88)
+- Array tests: Tests implemented for shift, unshift and reverse, pop and push (@muskuloes)
+- Demo page has been improved, new font plus change on input. Thanks @WofWca
+- [FEATURE #182](https://github.com/boa-dev/boa/pull/182):
+ Implement some Number prototype methods (incl tests) (@pop)
+- [FEATURE #34](https://github.com/boa-dev/boa/issues/34):
+ Number object and Constructore are implemented (including methods) (@pop)
+- [FEATURE #194](https://github.com/boa-dev/boa/pull/194):
+ Array.prototype.map (@IovoslavIovchev)
+- [FEATURE #90](https://github.com/boa-dev/boa/issues/90):
+ Symbol Implementation (@jasonwilliams)
+
+Bug fixes:
+
+- [BUG #113](https://github.com/boa-dev/boa/issues/113):
+ Unassigned variables have default of undefined (@pop)
+- [BUG #61](https://github.com/boa-dev/boa/issues/61):
+ Clippy warnings/errors fixed (@korpen)
+- [BUG #147](https://github.com/boa-dev/boa/pull/147):
+ Updated object global
+- [BUG #154](https://github.com/boa-dev/boa/issues/154):
+ Correctly handle all whitespaces within the lexer
+- Tidy up Globals being added to Global Object. Thanks @DomParfitt
+
+# 0.4.0 (2019-09-25)
+
+v0.4.0 brings quite a big release. The biggest feature to land is the support of regular expressions.
+Functions now have the arguments object supported and we have a [`debugging`](docs/debugging.md) section in the docs.
+
+Feature enhancements:
+
+- [FEATURE #6](https://github.com/boa-dev/boa/issues/6):
+ Support for regex literals. (Big thanks @999eagle)
+- [FEATURE #13](https://github.com/boa-dev/boa/issues/13):
+ toLowerCase, toUpperCase, substring, substr and valueOf implemented (thanks @arbroween)
+- Support for `arguments` object within functions
+- `StringData` instead of `PrimitieData` to match spec
+- Native function signatures changed, operations added to match spec
+- Primitives can now be boxed/unboxed when methods are ran on them
+- Spelling edits (thanks @someguynamedmatt)
+- Ability to set global values before interpreter starts (thanks @999eagle)
+- Assign operators implemented (thanks @oll3)
+-
+
+Bug fixes:
+
+- [BUG #57](https://github.com/boa-dev/boa/issues/57):
+ Fixed issue with stackoverflow by implementing early returns.
+- Allow to re-assign value to an existing binding. (Thanks @oll3)
+
+# 0.3.0 (2019-07-26)
+
+- UnexpectedKeyword(Else) bug fixed https://github.com/boa-dev/boa/issues/38
+- Contributing guide added
+- Ability to specify file - Thanks @callumquick
+- Travis fixes
+- Parser Tests - Thanks @Razican
+- Migrate to dyn traits - Thanks @Atul9
+- Added implementations for Array.prototype: concat(), push(), pop() and join() - Thanks @callumquick
+- Some clippy Issues fixed - Thanks @Razican
+- Objects have been refactored to use structs which are more closely aligned with the specification
+- Benchmarks have been added
+- String and Array specific console.log formats - Thanks @callumquick
+- isPropertyKey implementation added - Thanks @KrisChambers
+- Unit Tests for Array and Strings - Thanks @GalAster
+- typo fix - Thanks @palerdot
+- dist cleanup, thanks @zgotsch
+
+# 0.2.1 (2019-06-30)
+
+Some String prototype methods are implemented.
+Thanks to @lennartbuit we have
+trim/trimStart/trimEnd added to the string prototype
+
+Feature enhancements:
+
+- [String.prototype.concat ( ...args )](https://tc39.es/ecma262/#sec-string.prototype.slice)
+- [String.prototype.endsWith ( searchString [ , endPosition ] )](https://tc39.es/ecma262/#sec-string.prototype.endswith)
+- [String.prototype.includes ( searchString [ , position ] )](https://tc39.es/ecma262/#sec-string.prototype.includes)
+- [String.prototype.indexOf ( searchString [ , position ] )](https://tc39.es/ecma262/#sec-string.prototype.indexof)
+- [String.prototype.lastIndexOf ( searchString [ , position ] )](https://tc39.es/ecma262/#sec-string.prototype.lastindexof)
+- [String.prototype.repeat ( count )](https://tc39.es/ecma262/#sec-string.prototype.repeat)
+- [String.prototype.slice ( start, end )](https://tc39.es/ecma262/#sec-string.prototype.slice)
+- [String.prototype.startsWith ( searchString [ , position ] )](https://tc39.es/ecma262/#sec-string.prototype.startswith)
+
+Bug fixes:
+
+- Plenty
+
+# 0.2.0 (2019-06-10)
+
+Working state reached
+
+- Tests on the lexer, conforms with puncturators and keywords from TC39 specification
+- wasm-bindgen added with working demo in Web Assembly
+- snapshot of boa in a working state for the first time
diff --git a/__wasm/wit-bindgen-sample/engine/boa/CODE_OF_CONDUCT.md b/__wasm/wit-bindgen-sample/engine/boa/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000..8801a2f
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/CODE_OF_CONDUCT.md
@@ -0,0 +1,128 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+We as members, contributors, and leaders pledge to make participation in our
+community a harassment-free experience for everyone, regardless of age, body
+size, visible or invisible disability, ethnicity, sex characteristics, gender
+identity and expression, level of experience, education, socio-economic status,
+nationality, personal appearance, race, religion, or sexual identity
+and orientation.
+
+We pledge to act and interact in ways that contribute to an open, welcoming,
+diverse, inclusive, and healthy community.
+
+## Our Standards
+
+Examples of behavior that contributes to a positive environment for our
+community include:
+
+- Demonstrating empathy and kindness toward other people
+- Being respectful of differing opinions, viewpoints, and experiences
+- Giving and gracefully accepting constructive feedback
+- Accepting responsibility and apologizing to those affected by our mistakes,
+ and learning from the experience
+- Focusing on what is best not just for us as individuals, but for the
+ overall community
+
+Examples of unacceptable behavior include:
+
+- The use of sexualized language or imagery, and sexual attention or
+ advances of any kind
+- Trolling, insulting or derogatory comments, and personal or political attacks
+- Public or private harassment
+- Publishing others' private information, such as a physical or email
+ address, without their explicit permission
+- Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Enforcement Responsibilities
+
+Community leaders are responsible for clarifying and enforcing our standards of
+acceptable behavior and will take appropriate and fair corrective action in
+response to any behavior that they deem inappropriate, threatening, offensive,
+or harmful.
+
+Community leaders have the right and responsibility to remove, edit, or reject
+comments, commits, code, wiki edits, issues, and other contributions that are
+not aligned to this Code of Conduct, and will communicate reasons for moderation
+decisions when appropriate.
+
+## Scope
+
+This Code of Conduct applies within all community spaces, and also applies when
+an individual is officially representing the community in public spaces.
+Examples of representing our community include using an official e-mail address,
+posting via an official social media account, or acting as an appointed
+representative at an online or offline event.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported to the community leaders responsible for enforcement at
+[discord](https://discord.gg/tUFFk9Y) by contacting _JaseW_.
+All complaints will be reviewed and investigated promptly and fairly.
+
+All community leaders are obligated to respect the privacy and security of the
+reporter of any incident.
+
+## Enforcement Guidelines
+
+Community leaders will follow these Community Impact Guidelines in determining
+the consequences for any action they deem in violation of this Code of Conduct:
+
+### 1. Correction
+
+**Community Impact**: Use of inappropriate language or other behavior deemed
+unprofessional or unwelcome in the community.
+
+**Consequence**: A private, written warning from community leaders, providing
+clarity around the nature of the violation and an explanation of why the
+behavior was inappropriate. A public apology may be requested.
+
+### 2. Warning
+
+**Community Impact**: A violation through a single incident or series
+of actions.
+
+**Consequence**: A warning with consequences for continued behavior. No
+interaction with the people involved, including unsolicited interaction with
+those enforcing the Code of Conduct, for a specified period of time. This
+includes avoiding interactions in community spaces as well as external channels
+like social media. Violating these terms may lead to a temporary or
+permanent ban.
+
+### 3. Temporary Ban
+
+**Community Impact**: A serious violation of community standards, including
+sustained inappropriate behavior.
+
+**Consequence**: A temporary ban from any sort of interaction or public
+communication with the community for a specified period of time. No public or
+private interaction with the people involved, including unsolicited interaction
+with those enforcing the Code of Conduct, is allowed during this period.
+Violating these terms may lead to a permanent ban.
+
+### 4. Permanent Ban
+
+**Community Impact**: Demonstrating a pattern of violation of community
+standards, including sustained inappropriate behavior, harassment of an
+individual, or aggression toward or disparagement of classes of individuals.
+
+**Consequence**: A permanent ban from any sort of public interaction within
+the community.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage],
+version 2.0, available at
+https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
+
+Community Impact Guidelines were inspired by [Mozilla's code of conduct
+enforcement ladder](https://github.com/mozilla/diversity).
+
+[homepage]: https://www.contributor-covenant.org
+
+For answers to common questions about this code of conduct, see the FAQ at
+https://www.contributor-covenant.org/faq. Translations are available at
+https://www.contributor-covenant.org/translations.
diff --git a/__wasm/wit-bindgen-sample/engine/boa/CONTRIBUTING.md b/__wasm/wit-bindgen-sample/engine/boa/CONTRIBUTING.md
new file mode 100644
index 0000000..407431c
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/CONTRIBUTING.md
@@ -0,0 +1,115 @@
+# Contributing to Boa
+
+Boa welcomes contribution from everyone. Here are the guidelines if you are
+thinking of helping out:
+
+## Contributions
+
+Contributions to Boa or its dependencies should be made in the form of GitHub
+pull requests. Each pull request will be reviewed by a core contributor
+(someone with permission to land patches) and either landed in the main tree or
+given feedback for changes that would be required. All contributions should
+follow this format.
+
+Should you wish to work on an issue, please claim it first by commenting on
+the GitHub issue that you want to work on it. This is to prevent duplicated
+efforts from contributors on the same issue.
+
+Head over to [issues][issues] and check for "good first issue" labels to find
+good tasks to start with. If you come across words or jargon that do not make
+sense, please ask!
+
+If you don't already have Rust installed [_rustup_][rustup] is the recommended
+tool to use. It will install Rust and allow you to switch between _nightly_,
+_stable_ and _beta_. You can also install additional components. In Linux, you
+can run:
+
+```shell
+curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
+```
+
+Then simply clone this project and `cargo build`.
+
+### Running the compiler
+
+You can execute a Boa console by running `cargo run`, and you can compile a list
+of JavaScript files by running `cargo run -- file1.js file2.js` and so on.
+
+### Debugging
+
+Knowing how to debug the interpreter should help you resolve problems quite quickly.
+See [Debugging](./docs/debugging.md).
+
+### Web Assembly
+
+If you want to develop on the web assembly side you can run `yarn serve` and then go
+to .
+
+### boa-unicode
+
+Boa uses the library `boa-unicode` to query Unicode character properties and classes in lexer and parser. See [boa_unicode/README.md](./boa_unicode/README.md) for development and more information.
+
+### Setup
+
+#### VSCode Plugins
+
+Either the [Rust (RLS)][rls_vscode] or the [Rust Analyzer][rust-analyzer_vscode]
+extensions are preferred. RLS is easier to set up but some of the development is
+moving towards Rust Analyzer. Both of these plugins will help you with your Rust
+Development
+
+#### Tasks
+
+There are some pre-defined tasks in [tasks.json](.vscode/tasks.json)
+
+- Build - shift+cmd/ctrl+b should build and run cargo. You should be able to make changes and run this task.
+- Test - (there is no shortcut, you'll need to make one) - Runs `Cargo Test`.
+ I personally set a shortcut of shift+cmd+option+T (or shift+ctrl+alt+T)
+
+If you don't want to install everything on your machine, you can use the Dockerfile.
+Start VSCode in container mode (you may need the docker container plugin) and use the Dockerfile.
+
+## Testing
+
+Boa provides its own test suite, and can also run the official ECMAScript test suite. To run the Boa test
+suite, you can just run the normal `cargo test`, and to run the full ECMAScript test suite, you can run it
+with this command:
+
+```shell
+cargo run --release --bin boa_tester -- run -v 2> error.log
+```
+
+Note that this requires the `test262` submodule to be checked out, so you will need to run the following first:
+
+```shell
+git submodule init && git submodule update
+```
+
+This will run the test suite in verbose mode (you can remove the `-v` part to run it in non-verbose mode),
+and output nice colorings in the terminal. It will also output any panic information into the `error.log` file.
+
+You can get some more verbose information that tells you the exact name of each test that is being run, useful
+for debugging purposes by setting up the verbose flag twice, for example `-vv`. If you want to know the output of
+each test that is executed, you can use the triple verbose (`-vvv`) flag.
+
+If you want to only run one sub-suite or even one test (to just check if you fixed/broke something specific),
+you can do it with the `-s` parameter, and then passing the path to the sub-suite or test that you want to run. Note
+that the `-s` parameter value should be a path relative to the `test262` directory. For example, to run the number
+type tests, use `-s test/language/types/number`.
+
+Finally, if you're using the verbose flag and running a sub suite with a small number of tests, then the output will
+be more readable if you disable parallelism with the `-d` flag. All together it might look something like:
+
+```shell
+cargo run --release --bin boa_tester -- run -vv -d -s test/language/types/number 2> error.log
+```
+
+## Communication
+
+We have a Discord server, feel free to ask questions here:
+
+
+[issues]: https://github.com/boa-dev/boa/issues
+[rustup]: https://rustup.rs/
+[rls_vscode]: https://marketplace.visualstudio.com/items?itemName=rust-lang.rust
+[rust-analyzer_vscode]: https://marketplace.visualstudio.com/items?itemName=matklad.rust-analyzer
diff --git a/__wasm/wit-bindgen-sample/engine/boa/Cargo.lock b/__wasm/wit-bindgen-sample/engine/boa/Cargo.lock
new file mode 100644
index 0000000..b6abce1
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/Cargo.lock
@@ -0,0 +1,1983 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "aho-corasick"
+version = "0.7.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "ansi_term"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "anyhow"
+version = "1.0.58"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb07d2053ccdbe10e2af2995a2f116c1330396493dc1269f6a91d0ae82e19704"
+
+[[package]]
+name = "arrayvec"
+version = "0.4.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9"
+dependencies = [
+ "nodrop",
+]
+
+[[package]]
+name = "atty"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
+dependencies = [
+ "hermit-abi",
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "boa_cli"
+version = "0.15.0"
+dependencies = [
+ "boa_engine",
+ "boa_interner",
+ "clap 3.2.12",
+ "colored",
+ "jemallocator",
+ "phf",
+ "regex",
+ "rustyline",
+ "rustyline-derive",
+ "serde_json",
+]
+
+[[package]]
+name = "boa_engine"
+version = "0.15.0"
+dependencies = [
+ "bitflags",
+ "boa_gc",
+ "boa_interner",
+ "boa_profiler",
+ "boa_unicode",
+ "chrono",
+ "criterion",
+ "dyn-clone",
+ "fast-float",
+ "float-cmp",
+ "gc",
+ "icu_datetime",
+ "icu_locale_canonicalizer",
+ "icu_locid",
+ "icu_plurals",
+ "icu_provider",
+ "icu_testdata",
+ "indexmap",
+ "jemallocator",
+ "num-bigint",
+ "num-integer",
+ "num-traits",
+ "once_cell",
+ "rand",
+ "regress",
+ "rustc-hash",
+ "ryu-js",
+ "serde",
+ "serde_json",
+ "sys-locale",
+ "tap",
+ "unicode-normalization",
+]
+
+[[package]]
+name = "boa_examples"
+version = "0.15.0"
+dependencies = [
+ "boa_engine",
+ "boa_gc",
+ "gc",
+]
+
+[[package]]
+name = "boa_gc"
+version = "0.15.0"
+dependencies = [
+ "gc",
+ "measureme",
+]
+
+[[package]]
+name = "boa_interner"
+version = "0.15.0"
+dependencies = [
+ "phf",
+ "rustc-hash",
+ "serde",
+ "static_assertions",
+]
+
+[[package]]
+name = "boa_profiler"
+version = "0.15.0"
+dependencies = [
+ "measureme",
+ "once_cell",
+]
+
+[[package]]
+name = "boa_tester"
+version = "0.15.0"
+dependencies = [
+ "anyhow",
+ "bitflags",
+ "boa_engine",
+ "boa_gc",
+ "boa_interner",
+ "colored",
+ "fxhash",
+ "gc",
+ "num-format",
+ "once_cell",
+ "rayon",
+ "regex",
+ "serde",
+ "serde_json",
+ "serde_yaml",
+ "structopt",
+]
+
+[[package]]
+name = "boa_unicode"
+version = "0.15.0"
+dependencies = [
+ "unicode-general-category",
+]
+
+[[package]]
+name = "boa_wasm"
+version = "0.15.0"
+dependencies = [
+ "boa_engine",
+ "getrandom",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "bstr"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223"
+dependencies = [
+ "lazy_static",
+ "memchr",
+ "regex-automata",
+ "serde",
+]
+
+[[package]]
+name = "bumpalo"
+version = "3.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3"
+
+[[package]]
+name = "byteorder"
+version = "1.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
+
+[[package]]
+name = "cast"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c24dab4283a142afa2fdca129b80ad2c6284e073930f964c3a1293c225ee39a"
+dependencies = [
+ "rustc_version",
+]
+
+[[package]]
+name = "cc"
+version = "1.0.73"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "chrono"
+version = "0.4.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73"
+dependencies = [
+ "libc",
+ "num-integer",
+ "num-traits",
+ "time",
+ "winapi",
+]
+
+[[package]]
+name = "clap"
+version = "2.34.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
+dependencies = [
+ "ansi_term",
+ "atty",
+ "bitflags",
+ "strsim 0.8.0",
+ "textwrap 0.11.0",
+ "unicode-width",
+ "vec_map",
+]
+
+[[package]]
+name = "clap"
+version = "3.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab8b79fe3946ceb4a0b1c080b4018992b8d27e9ff363644c1c9b6387c854614d"
+dependencies = [
+ "atty",
+ "bitflags",
+ "clap_derive",
+ "clap_lex",
+ "indexmap",
+ "once_cell",
+ "strsim 0.10.0",
+ "termcolor",
+ "textwrap 0.15.0",
+]
+
+[[package]]
+name = "clap_derive"
+version = "3.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "759bf187376e1afa7b85b959e6a664a3e7a95203415dba952ad19139e798f902"
+dependencies = [
+ "heck 0.4.0",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "clap_lex"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5538cd660450ebeb4234cfecf8f2284b844ffc4c50531e66d584ad5b91293613"
+dependencies = [
+ "os_str_bytes",
+]
+
+[[package]]
+name = "clipboard-win"
+version = "4.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f3e1238132dc01f081e1cbb9dace14e5ef4c3a51ee244bd982275fb514605db"
+dependencies = [
+ "error-code",
+ "str-buf",
+ "winapi",
+]
+
+[[package]]
+name = "colored"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b3616f750b84d8f0de8a58bda93e08e2a81ad3f523089b05f1dffecab48c6cbd"
+dependencies = [
+ "atty",
+ "lazy_static",
+ "winapi",
+]
+
+[[package]]
+name = "criterion"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1604dafd25fba2fe2d5895a9da139f8dc9b319a5fe5354ca137cbbce4e178d10"
+dependencies = [
+ "atty",
+ "cast",
+ "clap 2.34.0",
+ "criterion-plot",
+ "csv",
+ "itertools",
+ "lazy_static",
+ "num-traits",
+ "oorandom",
+ "plotters",
+ "rayon",
+ "regex",
+ "serde",
+ "serde_cbor",
+ "serde_derive",
+ "serde_json",
+ "tinytemplate",
+ "walkdir",
+]
+
+[[package]]
+name = "criterion-plot"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d00996de9f2f7559f7f4dc286073197f83e92256a59ed395f9aac01fe717da57"
+dependencies = [
+ "cast",
+ "itertools",
+]
+
+[[package]]
+name = "crossbeam-channel"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c02a4d71819009c192cf4872265391563fd6a84c81ff2c0f2a7026ca4c1d85c"
+dependencies = [
+ "cfg-if",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-deque"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e"
+dependencies = [
+ "cfg-if",
+ "crossbeam-epoch",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-epoch"
+version = "0.9.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07db9d94cbd326813772c968ccd25999e5f8ae22f4f8d1b11effa37ef6ce281d"
+dependencies = [
+ "autocfg",
+ "cfg-if",
+ "crossbeam-utils",
+ "memoffset",
+ "once_cell",
+ "scopeguard",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ff1f980957787286a554052d03c7aee98d99cc32e09f6d45f0a814133c87978"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+]
+
+[[package]]
+name = "cstr_core"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "644828c273c063ab0d39486ba42a5d1f3a499d35529c759e763a9c6cb8a0fb08"
+dependencies = [
+ "cty",
+ "memchr",
+]
+
+[[package]]
+name = "csv"
+version = "1.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1"
+dependencies = [
+ "bstr",
+ "csv-core",
+ "itoa 0.4.8",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "csv-core"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "cty"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35"
+
+[[package]]
+name = "dirs-next"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1"
+dependencies = [
+ "cfg-if",
+ "dirs-sys-next",
+]
+
+[[package]]
+name = "dirs-sys-next"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"
+dependencies = [
+ "libc",
+ "redox_users",
+ "winapi",
+]
+
+[[package]]
+name = "displaydoc"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "dyn-clone"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "435217f1b2d06f00513185fb991cd426271d9e4c3a9d9b25b919b8e5a03b282d"
+
+[[package]]
+name = "either"
+version = "1.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
+
+[[package]]
+name = "endian-type"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d"
+
+[[package]]
+name = "errno"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1"
+dependencies = [
+ "errno-dragonfly",
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "errno-dragonfly"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
+dependencies = [
+ "cc",
+ "libc",
+]
+
+[[package]]
+name = "error-code"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "64f18991e7bf11e7ffee451b5318b5c1a73c52d0d0ada6e5a3017c8c1ced6a21"
+dependencies = [
+ "libc",
+ "str-buf",
+]
+
+[[package]]
+name = "fast-float"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95765f67b4b18863968b4a1bd5bb576f732b29a4a28c7cd84c09fa3e2875f33c"
+
+[[package]]
+name = "fd-lock"
+version = "3.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46e245f4c8ec30c6415c56cb132c07e69e74f1942f6b4a4061da748b49f486ca"
+dependencies = [
+ "cfg-if",
+ "rustix",
+ "windows-sys",
+]
+
+[[package]]
+name = "fixed_decimal"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa523feb405bd9fd25daafb500a48112156a8c15860d18451190e8701500e863"
+dependencies = [
+ "displaydoc",
+ "smallvec",
+ "static_assertions",
+ "writeable",
+]
+
+[[package]]
+name = "float-cmp"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "fs_extra"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2022715d62ab30faffd124d40b76f4134a550a87792276512b18d63272333394"
+
+[[package]]
+name = "fxhash"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c"
+dependencies = [
+ "byteorder",
+]
+
+[[package]]
+name = "gc"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3edaac0f5832202ebc99520cb77c932248010c4645d20be1dc62d6579f5b3752"
+dependencies = [
+ "gc_derive",
+]
+
+[[package]]
+name = "gc_derive"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60df8444f094ff7885631d80e78eb7d88c3c2361a98daaabb06256e4500db941"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "libc",
+ "wasi 0.11.0+wasi-snapshot-preview1",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "half"
+version = "1.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
+
+[[package]]
+name = "hashbrown"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db0d4cf898abf0081f964436dc980e96670a0f36863e4b83aaacdb65c9d7ccc3"
+
+[[package]]
+name = "heck"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
+dependencies = [
+ "unicode-segmentation",
+]
+
+[[package]]
+name = "heck"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9"
+
+[[package]]
+name = "hermit-abi"
+version = "0.1.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "icu_calendar"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c0d5e4d859bd991761ead59f6c8745d3cf3443c1c6c9bf6c5131b3ac8cf3c09"
+dependencies = [
+ "displaydoc",
+ "icu_locid",
+ "icu_provider",
+ "serde",
+ "tinystr",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_datetime"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "683f1ef5f2d28919f374030942274e0576e4f09c2d2735092899eb8dc1842c9d"
+dependencies = [
+ "displaydoc",
+ "either",
+ "icu_calendar",
+ "icu_locid",
+ "icu_plurals",
+ "icu_provider",
+ "litemap",
+ "serde",
+ "smallvec",
+ "tinystr",
+ "writeable",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_locale_canonicalizer"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "973942d4e8c01fac1839feb537f4933514236585f418125963ff78d4004eebfd"
+dependencies = [
+ "icu_locid",
+ "icu_provider",
+ "litemap",
+ "serde",
+ "tinystr",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_locid"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a47bdfb63c6b49f5c43fb7ba358edcd1422fdf2e8df6fe26ece0df4925333cd"
+dependencies = [
+ "displaydoc",
+ "litemap",
+ "serde",
+ "tinystr",
+ "writeable",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_plurals"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "01a725b9ebe4910eb1bcc65a3a4c3262c6cc2ebd327a63df9f6d18ee53acee5f"
+dependencies = [
+ "displaydoc",
+ "fixed_decimal",
+ "icu_locid",
+ "icu_provider",
+ "serde",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_provider"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7fbd7ffd479fdbbc366334a82821dc50d9f80b758389393374e9b36ff159f1a"
+dependencies = [
+ "displaydoc",
+ "icu_locid",
+ "icu_provider_macros",
+ "litemap",
+ "postcard",
+ "serde",
+ "writeable",
+ "yoke",
+ "zerofrom",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_provider_blob"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "474b884a565f7ec52a26754a8b57646c128195e7af629caa52317ef6674e3e0d"
+dependencies = [
+ "icu_provider",
+ "postcard",
+ "serde",
+ "writeable",
+ "yoke",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_provider_macros"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "71e3ab0b492dcc1416f2f16142596467382ed70bdbfaee51c83e086b1ce0e75c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "icu_testdata"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a5580eeaa6ea70b94f286120ffcfb70f75ac8d759d95ccf6223a3c479ff99285"
+dependencies = [
+ "icu_provider",
+ "icu_provider_blob",
+]
+
+[[package]]
+name = "indexmap"
+version = "1.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e"
+dependencies = [
+ "autocfg",
+ "hashbrown",
+]
+
+[[package]]
+name = "instant"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "io-lifetimes"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9448015e586b611e5d322f6703812bbca2f1e709d5773ecd38ddb4e3bb649504"
+
+[[package]]
+name = "itertools"
+version = "0.10.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itoa"
+version = "0.4.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"
+
+[[package]]
+name = "itoa"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d"
+
+[[package]]
+name = "jemalloc-sys"
+version = "0.5.0+5.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f655c3ecfa6b0d03634595b4b54551d4bd5ac208b9e0124873949a7ab168f70b"
+dependencies = [
+ "cc",
+ "fs_extra",
+ "libc",
+]
+
+[[package]]
+name = "jemallocator"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "16c2514137880c52b0b4822b563fadd38257c1f380858addb74a400889696ea6"
+dependencies = [
+ "jemalloc-sys",
+ "libc",
+]
+
+[[package]]
+name = "js-sys"
+version = "0.3.58"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3fac17f7123a73ca62df411b1bf727ccc805daa070338fda671c86dac1bdc27"
+dependencies = [
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "lazy_static"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+
+[[package]]
+name = "libc"
+version = "0.2.126"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836"
+
+[[package]]
+name = "linked-hash-map"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3"
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.0.46"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4d2456c373231a208ad294c33dc5bff30051eafd954cd4caae83a712b12854d"
+
+[[package]]
+name = "litemap"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78d268a51abaaee3b8686e56396eb725b0da510bddd266a52e784aa1029dae73"
+dependencies = [
+ "serde",
+ "yoke",
+]
+
+[[package]]
+name = "lock_api"
+version = "0.4.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53"
+dependencies = [
+ "autocfg",
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.4.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "measureme"
+version = "10.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cbdc226fa10994e8f66a4d2f6f000148bc563a1c671b6dcd2135737018033d8a"
+dependencies = [
+ "log",
+ "memmap2",
+ "parking_lot",
+ "perf-event-open-sys",
+ "rustc-hash",
+ "smallvec",
+]
+
+[[package]]
+name = "memchr"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+
+[[package]]
+name = "memmap2"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "723e3ebdcdc5c023db1df315364573789f8857c11b631a2fdfad7c00f5c046b4"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "memoffset"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "nibble_vec"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43"
+dependencies = [
+ "smallvec",
+]
+
+[[package]]
+name = "nix"
+version = "0.23.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9f866317acbd3a240710c63f065ffb1e4fd466259045ccb504130b7f668f35c6"
+dependencies = [
+ "bitflags",
+ "cc",
+ "cfg-if",
+ "libc",
+ "memoffset",
+]
+
+[[package]]
+name = "nodrop"
+version = "0.1.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb"
+
+[[package]]
+name = "num-bigint"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f"
+dependencies = [
+ "autocfg",
+ "num-integer",
+ "num-traits",
+ "serde",
+]
+
+[[package]]
+name = "num-format"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bafe4179722c2894288ee77a9f044f02811c86af699344c498b0840c698a2465"
+dependencies = [
+ "arrayvec",
+ "itoa 0.4.8",
+]
+
+[[package]]
+name = "num-integer"
+version = "0.1.45"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
+dependencies = [
+ "autocfg",
+ "num-traits",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "num_cpus"
+version = "1.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"
+dependencies = [
+ "hermit-abi",
+ "libc",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1"
+
+[[package]]
+name = "oorandom"
+version = "11.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
+
+[[package]]
+name = "os_str_bytes"
+version = "6.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "21326818e99cfe6ce1e524c2a805c189a99b5ae555a35d19f9a284b427d86afa"
+
+[[package]]
+name = "parking_lot"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99"
+dependencies = [
+ "instant",
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216"
+dependencies = [
+ "cfg-if",
+ "instant",
+ "libc",
+ "redox_syscall",
+ "smallvec",
+ "winapi",
+]
+
+[[package]]
+name = "perf-event-open-sys"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce9bedf5da2c234fdf2391ede2b90fabf585355f33100689bc364a3ea558561a"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "phf"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259"
+dependencies = [
+ "phf_macros",
+ "phf_shared",
+ "proc-macro-hack",
+]
+
+[[package]]
+name = "phf_generator"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6"
+dependencies = [
+ "phf_shared",
+ "rand",
+]
+
+[[package]]
+name = "phf_macros"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0"
+dependencies = [
+ "phf_generator",
+ "phf_shared",
+ "proc-macro-hack",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "phf_shared"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096"
+dependencies = [
+ "siphasher",
+]
+
+[[package]]
+name = "plotters"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a3fd9ec30b9749ce28cd91f255d569591cdf937fe280c312143e3c4bad6f2a"
+dependencies = [
+ "num-traits",
+ "plotters-backend",
+ "plotters-svg",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "plotters-backend"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d88417318da0eaf0fdcdb51a0ee6c3bed624333bff8f946733049380be67ac1c"
+
+[[package]]
+name = "plotters-svg"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "521fa9638fa597e1dc53e9412a4f9cefb01187ee1f7413076f9e6749e2885ba9"
+dependencies = [
+ "plotters-backend",
+]
+
+[[package]]
+name = "postcard"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a25c0b0ae06fcffe600ad392aabfa535696c8973f2253d9ac83171924c58a858"
+dependencies = [
+ "postcard-cobs",
+ "serde",
+]
+
+[[package]]
+name = "postcard-cobs"
+version = "0.1.5-pre"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c68cb38ed13fd7bc9dd5db8f165b7c8d9c1a315104083a2b10f11354c2af97f"
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872"
+
+[[package]]
+name = "proc-macro-error"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
+dependencies = [
+ "proc-macro-error-attr",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro-error-attr"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro-hack"
+version = "0.5.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.39"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c54b25569025b7fc9651de43004ae593a75ad88543b17178aa5e1b9c4f15f56f"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "radix_trie"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd"
+dependencies = [
+ "endian-type",
+ "nibble_vec",
+]
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
+dependencies = [
+ "getrandom",
+]
+
+[[package]]
+name = "rayon"
+version = "1.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d"
+dependencies = [
+ "autocfg",
+ "crossbeam-deque",
+ "either",
+ "rayon-core",
+]
+
+[[package]]
+name = "rayon-core"
+version = "1.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f"
+dependencies = [
+ "crossbeam-channel",
+ "crossbeam-deque",
+ "crossbeam-utils",
+ "num_cpus",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.2.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42"
+dependencies = [
+ "bitflags",
+]
+
+[[package]]
+name = "redox_users"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"
+dependencies = [
+ "getrandom",
+ "redox_syscall",
+ "thiserror",
+]
+
+[[package]]
+name = "regex"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
+
+[[package]]
+name = "regex-syntax"
+version = "0.6.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
+
+[[package]]
+name = "regress"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0a92ff21fe8026ce3f2627faaf43606f0b67b014dbc9ccf027181a804f75d92e"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "rustc-hash"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
+
+[[package]]
+name = "rustc_version"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
+dependencies = [
+ "semver",
+]
+
+[[package]]
+name = "rustix"
+version = "0.34.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2079c267b8394eb529872c3cf92e181c378b41fea36e68130357b52493701d2e"
+dependencies = [
+ "bitflags",
+ "errno",
+ "io-lifetimes",
+ "libc",
+ "linux-raw-sys",
+ "winapi",
+]
+
+[[package]]
+name = "rustyline"
+version = "9.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db7826789c0e25614b03e5a54a0717a86f9ff6e6e5247f92b369472869320039"
+dependencies = [
+ "bitflags",
+ "cfg-if",
+ "clipboard-win",
+ "dirs-next",
+ "fd-lock",
+ "libc",
+ "log",
+ "memchr",
+ "nix",
+ "radix_trie",
+ "scopeguard",
+ "smallvec",
+ "unicode-segmentation",
+ "unicode-width",
+ "utf8parse",
+ "winapi",
+]
+
+[[package]]
+name = "rustyline-derive"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb35a55ab810b5c0fe31606fe9b47d1354e4dc519bec0a102655f78ea2b38057"
+dependencies = [
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "ryu"
+version = "1.0.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695"
+
+[[package]]
+name = "ryu-js"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6518fc26bced4d53678a22d6e423e9d8716377def84545fe328236e3af070e7f"
+
+[[package]]
+name = "same-file"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "scopeguard"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+
+[[package]]
+name = "semver"
+version = "1.0.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a41d061efea015927ac527063765e73601444cdc344ba855bc7bd44578b25e1c"
+
+[[package]]
+name = "serde"
+version = "1.0.139"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0171ebb889e45aa68b44aee0859b3eede84c6f5f5c228e6f140c0b2a0a46cad6"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_cbor"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5"
+dependencies = [
+ "half",
+ "serde",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.139"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc1d3230c1de7932af58ad8ffbe1d784bd55efd5a9d84ac24f69c72d83543dfb"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.82"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82c2c1fdcd807d1098552c5b9a36e425e42e9fbd7c6a37a8425f390f781f7fa7"
+dependencies = [
+ "itoa 1.0.2",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_yaml"
+version = "0.8.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1ec0091e1f5aa338283ce049bd9dfefd55e1f168ac233e85c1ffe0038fb48cbe"
+dependencies = [
+ "indexmap",
+ "ryu",
+ "serde",
+ "yaml-rust",
+]
+
+[[package]]
+name = "siphasher"
+version = "0.3.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de"
+
+[[package]]
+name = "smallvec"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "stable_deref_trait"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
+
+[[package]]
+name = "static_assertions"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+
+[[package]]
+name = "str-buf"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e08d8363704e6c71fc928674353e6b7c23dcea9d82d7012c8faf2a3a025f8d0"
+
+[[package]]
+name = "strsim"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
+
+[[package]]
+name = "strsim"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+
+[[package]]
+name = "structopt"
+version = "0.3.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c6b5c64445ba8094a6ab0c3cd2ad323e07171012d9c98b0b15651daf1787a10"
+dependencies = [
+ "clap 2.34.0",
+ "lazy_static",
+ "structopt-derive",
+]
+
+[[package]]
+name = "structopt-derive"
+version = "0.4.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0"
+dependencies = [
+ "heck 0.3.3",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "syn"
+version = "1.0.96"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0748dd251e24453cb8717f0354206b91557e4ec8703673a4b30208f2abaf1ebf"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "synstructure"
+version = "0.12.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "unicode-xid",
+]
+
+[[package]]
+name = "sys-locale"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "658ee915b6c7b73ec4c1ffcd838506b5c5a4087eadc1ec8f862f1066cf2c8132"
+dependencies = [
+ "cc",
+ "cstr_core",
+ "js-sys",
+ "libc",
+ "wasm-bindgen",
+ "web-sys",
+ "winapi",
+]
+
+[[package]]
+name = "tap"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369"
+
+[[package]]
+name = "termcolor"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "textwrap"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
+dependencies = [
+ "unicode-width",
+]
+
+[[package]]
+name = "textwrap"
+version = "0.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb"
+
+[[package]]
+name = "thiserror"
+version = "1.0.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "time"
+version = "0.1.44"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255"
+dependencies = [
+ "libc",
+ "wasi 0.10.0+wasi-snapshot-preview1",
+ "winapi",
+]
+
+[[package]]
+name = "tinystr"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a34eb32d8589368c99f8d6c0b9be3d09480d992da08c5990702b3e6b9260af8"
+dependencies = [
+ "displaydoc",
+ "serde",
+ "zerovec",
+]
+
+[[package]]
+name = "tinytemplate"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
+dependencies = [
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "tinyvec"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+dependencies = [
+ "tinyvec_macros",
+]
+
+[[package]]
+name = "tinyvec_macros"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
+
+[[package]]
+name = "unicode-general-category"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1218098468b8085b19a2824104c70d976491d247ce194bbd9dc77181150cdfd6"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c"
+
+[[package]]
+name = "unicode-normalization"
+version = "0.1.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "854cbdc4f7bc6ae19c820d44abdc3277ac3e1b2b93db20a636825d9322fb60e6"
+dependencies = [
+ "tinyvec",
+]
+
+[[package]]
+name = "unicode-segmentation"
+version = "1.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99"
+
+[[package]]
+name = "unicode-width"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
+
+[[package]]
+name = "unicode-xid"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04"
+
+[[package]]
+name = "utf8parse"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "936e4b492acfd135421d8dca4b1aa80a7bfc26e702ef3af710e0752684df5372"
+
+[[package]]
+name = "vec_map"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
+
+[[package]]
+name = "version_check"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+
+[[package]]
+name = "walkdir"
+version = "2.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56"
+dependencies = [
+ "same-file",
+ "winapi",
+ "winapi-util",
+]
+
+[[package]]
+name = "wasi"
+version = "0.10.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f"
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.81"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c53b543413a17a202f4be280a7e5c62a1c69345f5de525ee64f8cfdbc954994"
+dependencies = [
+ "cfg-if",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.81"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5491a68ab4500fa6b4d726bd67408630c3dbe9c4fe7bda16d5c82a1fd8c7340a"
+dependencies = [
+ "bumpalo",
+ "lazy_static",
+ "log",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.81"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c441e177922bc58f1e12c022624b6216378e5febc2f0533e41ba443d505b80aa"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.81"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7d94ac45fcf608c1f45ef53e748d35660f168490c10b23704c7779ab8f5c3048"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.81"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a89911bd99e5f3659ec4acf9c4d93b0a90fe4a2a11f15328472058edc5261be"
+
+[[package]]
+name = "web-sys"
+version = "0.3.58"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2fed94beee57daf8dd7d51f2b15dc2bcde92d7a72304cdf662a4371008b71b90"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-util"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "windows-sys"
+version = "0.30.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "030b7ff91626e57a05ca64a07c481973cbb2db774e4852c9c7ca342408c6a99a"
+dependencies = [
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.30.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29277a4435d642f775f63c7d1faeb927adba532886ce0287bd985bffb16b6bca"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.30.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1145e1989da93956c68d1864f32fb97c8f561a8f89a5125f6a2b7ea75524e4b8"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.30.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4a09e3a0d4753b73019db171c1339cd4362c8c44baf1bcea336235e955954a6"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.30.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ca64fcb0220d58db4c119e050e7af03c69e6f4f415ef69ec1773d9aab422d5a"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.30.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08cabc9f0066848fef4bc6a1c1668e6efce38b661d2aeec75d18d8617eebb5f1"
+
+[[package]]
+name = "writeable"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae065fb2b24446a45c2bea0fe256b4ca54032661ee72d2500aaadeeec41b8e4e"
+
+[[package]]
+name = "yaml-rust"
+version = "0.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85"
+dependencies = [
+ "linked-hash-map",
+]
+
+[[package]]
+name = "yoke"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a829d54286b35cf07cbf9d8de817387ba4de20286e59214e67eaad5124b620a1"
+dependencies = [
+ "serde",
+ "stable_deref_trait",
+ "yoke-derive",
+ "zerofrom",
+]
+
+[[package]]
+name = "yoke-derive"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "768f11e61cfb57f5de25941c877571dde114de48cac204594cc72beb71073d9f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
+[[package]]
+name = "zerofrom"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aed578cc7fa1c85290bdaca18fa5ac8a9365ddd9ed54af4380a6c5e13d9fc484"
+dependencies = [
+ "zerofrom-derive",
+]
+
+[[package]]
+name = "zerofrom-derive"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8785f47d6062c1932866147f91297286a9f350b3070e9d9f0b6078e37d623c1a"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
+[[package]]
+name = "zerovec"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c1b475ff48237bf7281cfa1721a52f0ad7f95ede1a46385e555870a354afc45"
+dependencies = [
+ "serde",
+ "yoke",
+ "zerofrom",
+ "zerovec-derive",
+]
+
+[[package]]
+name = "zerovec-derive"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd14fd397ea1b593c9c97a35d4da3dfb3a0ac7a1cad0e7f9e1b4bc313d1787e9"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
diff --git a/__wasm/wit-bindgen-sample/engine/boa/Cargo.toml b/__wasm/wit-bindgen-sample/engine/boa/Cargo.toml
new file mode 100644
index 0000000..20631cf
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/Cargo.toml
@@ -0,0 +1,34 @@
+[workspace]
+members = [
+ "boa_cli",
+ "boa_engine",
+ "boa_gc",
+ "boa_interner",
+ "boa_profiler",
+ "boa_tester",
+ "boa_unicode",
+ "boa_wasm",
+ "boa_examples",
+]
+
+[workspace.metadata.workspaces]
+allow_branch = "main"
+
+# The release profile, used for `cargo build --release`.
+[profile.release]
+# Enables "fat" LTO, for faster release builds
+lto = "fat"
+# Makes sure that all code is compiled together, for LTO
+codegen-units = 1
+
+# The test profile, used for `cargo test`.
+[profile.test]
+# Enables thin local LTO and some optimizations.
+opt-level = 1
+
+# The benchmark profile, used for `cargo bench`.
+[profile.bench]
+# Enables "fat" LTO, for faster benchmark builds
+lto = "fat"
+# Makes sure that all code is compiled together, for LTO
+codegen-units = 1
diff --git a/__wasm/wit-bindgen-sample/engine/boa/LICENSE-MIT b/__wasm/wit-bindgen-sample/engine/boa/LICENSE-MIT
new file mode 100644
index 0000000..d87a9e8
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/LICENSE-MIT
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2019 Jason Williams
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/__wasm/wit-bindgen-sample/engine/boa/LICENSE-UNLICENSE b/__wasm/wit-bindgen-sample/engine/boa/LICENSE-UNLICENSE
new file mode 100644
index 0000000..cf1ab25
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/LICENSE-UNLICENSE
@@ -0,0 +1,24 @@
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to
diff --git a/__wasm/wit-bindgen-sample/engine/boa/README.md b/__wasm/wit-bindgen-sample/engine/boa/README.md
new file mode 100644
index 0000000..e01aa75
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/README.md
@@ -0,0 +1,115 @@
+# Boa
+
+
+
+
+
+This is an experimental Javascript lexer, parser and interpreter written in Rust.
+Currently, it has support for some of the language.
+
+[![Build Status][build_badge]][build_link]
+[](https://codecov.io/gh/boa-dev/boa)
+[](https://crates.io/crates/Boa)
+[](https://docs.rs/Boa/)
+[](https://discord.gg/tUFFk9Y)
+
+[build_badge]: https://github.com/boa-dev/boa/actions/workflows/rust.yml/badge.svg?event=push&branch=main
+[build_link]: https://github.com/boa-dev/boa/actions/workflows/rust.yml?query=event%3Apush+branch%3Amain
+
+## Live Demo (WASM)
+
+
+
+You can get more verbose errors when running from the command line.
+
+## Development documentation
+
+You can check the internal development docs at .
+
+## Conformance
+
+To know how much of the _ECMAScript_ specification does Boa cover, you can check out results running the _ECMASCript Test262_ test suite [here](https://boa-dev.github.io/boa/test262/).
+
+## Contributing
+
+Please, check the [CONTRIBUTING.md](CONTRIBUTING.md) file to know how to
+contribute in the project. You will need Rust installed and an editor. We have
+some configurations ready for VSCode.
+
+### Debugging
+
+Check [debugging.md](./docs/debugging.md) for more info on debugging.
+
+### Web Assembly
+
+This interpreter can be exposed to JavaScript!
+You can build the example locally with:
+
+```shell
+npm run build
+```
+
+In the console you can use `window.evaluate` to pass JavaScript in.
+To develop on the web assembly side you can run:
+
+```shell
+npm run serve
+```
+
+then go to `http://localhost:8080`.
+
+## Usage
+
+- Clone this repo.
+- Run with `cargo run -- test.js` where `test.js` is an existing JS file with any JS valid code.
+- If any JS doesn't work then it's a bug. Please raise an [issue](https://github.com/boa-dev/boa/issues/)!
+
+### Example
+
+
+
+## Command-line Options
+
+```shell
+USAGE:
+ boa [OPTIONS] [FILE]...
+
+FLAGS:
+ -h, --help Prints help information
+ -V, --version Prints version information
+
+OPTIONS:
+ -a, --dump-ast Dump the abstract syntax tree (ast) to stdout with the given format [possible values: Debug, Json,
+ JsonPretty]
+
+ARGS:
+ ... The JavaScript file(s) to be evaluated
+```
+
+## Roadmap
+
+See [Milestones](https://github.com/boa-dev/boa/milestones).
+
+## Benchmarks
+
+See [Benchmarks](https://boa-dev.github.io/boa/dev/bench/).
+
+## Profiling
+
+See [Profiling](./docs/profiling.md).
+
+## Changelog
+
+See [CHANGELOG.md](./CHANGELOG.md).
+
+## Communication
+
+Feel free to contact us on [Discord](https://discord.gg/tUFFk9Y).
+
+## License
+
+This project is licensed under the [Unlicense](./LICENSE-UNLICENSE) or [MIT](./LICENSE-MIT) licenses, at your option.
diff --git a/__wasm/wit-bindgen-sample/engine/boa/assets/01_rust_loves_js.png b/__wasm/wit-bindgen-sample/engine/boa/assets/01_rust_loves_js.png
new file mode 100644
index 0000000..145034d
Binary files /dev/null and b/__wasm/wit-bindgen-sample/engine/boa/assets/01_rust_loves_js.png differ
diff --git a/__wasm/wit-bindgen-sample/engine/boa/assets/logo.svg b/__wasm/wit-bindgen-sample/engine/boa/assets/logo.svg
new file mode 100644
index 0000000..d91e1db
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/assets/logo.svg
@@ -0,0 +1,184 @@
+
+
diff --git a/__wasm/wit-bindgen-sample/engine/boa/boa_cli/Cargo.toml b/__wasm/wit-bindgen-sample/engine/boa/boa_cli/Cargo.toml
new file mode 100644
index 0000000..55d2f24
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/boa_cli/Cargo.toml
@@ -0,0 +1,31 @@
+[package]
+name = "boa_cli"
+version = "0.15.0"
+edition = "2021"
+rust-version = "1.60"
+authors = ["boa-dev"]
+description = "Boa is a Javascript lexer, parser and Just-in-Time compiler written in Rust. Currently, it has support for some of the language."
+repository = "https://github.com/boa-dev/boa"
+keywords = ["javascript", "compiler", "lexer", "parser", "js", "cli"]
+categories = ["command-line-utilities"]
+license = "Unlicense/MIT"
+default-run = "boa"
+
+[dependencies]
+boa_engine = { path = "../boa_engine", features = ["deser", "console"], version = "0.15.0" }
+boa_interner = { path = "../boa_interner", version = "0.15.0" }
+rustyline = "9.1.2"
+rustyline-derive = "0.6.0"
+clap = { version = "3.2.12", features = ["derive"] }
+serde_json = "1.0.82"
+colored = "2.0.0"
+regex = "1.6.0"
+phf = { version = "0.10.1", features = ["macros"] }
+
+[target.x86_64-unknown-linux-gnu.dependencies]
+jemallocator = "0.5.0"
+
+[[bin]]
+name = "boa"
+doc = false
+path = "src/main.rs"
diff --git a/__wasm/wit-bindgen-sample/engine/boa/boa_cli/src/helper.rs b/__wasm/wit-bindgen-sample/engine/boa/boa_cli/src/helper.rs
new file mode 100644
index 0000000..cd4f723
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/boa_cli/src/helper.rs
@@ -0,0 +1,173 @@
+use colored::{Color, Colorize};
+use phf::{phf_set, Set};
+use regex::{Captures, Regex};
+use rustyline::{
+ error::ReadlineError,
+ highlight::Highlighter,
+ validate::{MatchingBracketValidator, ValidationContext, ValidationResult, Validator},
+};
+use rustyline_derive::{Completer, Helper, Hinter};
+use std::borrow::Cow;
+
+const STRING_COLOR: Color = Color::Green;
+const KEYWORD_COLOR: Color = Color::Yellow;
+const PROPERTY_COLOR: Color = Color::Magenta;
+const OPERATOR_COLOR: Color = Color::TrueColor {
+ r: 214,
+ g: 95,
+ b: 26,
+};
+const UNDEFINED_COLOR: Color = Color::TrueColor {
+ r: 100,
+ g: 100,
+ b: 100,
+};
+const NUMBER_COLOR: Color = Color::TrueColor {
+ r: 26,
+ g: 214,
+ b: 175,
+};
+const IDENTIFIER_COLOR: Color = Color::TrueColor {
+ r: 26,
+ g: 160,
+ b: 214,
+};
+
+#[allow(clippy::upper_case_acronyms)]
+#[derive(Completer, Helper, Hinter)]
+pub(crate) struct RLHelper {
+ highlighter: LineHighlighter,
+ validator: MatchingBracketValidator,
+}
+
+impl RLHelper {
+ #[inline]
+ pub(crate) fn new() -> Self {
+ Self {
+ highlighter: LineHighlighter,
+ validator: MatchingBracketValidator::new(),
+ }
+ }
+}
+
+impl Validator for RLHelper {
+ fn validate(
+ &self,
+ context: &mut ValidationContext<'_>,
+ ) -> Result {
+ self.validator.validate(context)
+ }
+
+ fn validate_while_typing(&self) -> bool {
+ self.validator.validate_while_typing()
+ }
+}
+
+impl Highlighter for RLHelper {
+ fn highlight_hint<'h>(&self, hint: &'h str) -> Cow<'h, str> {
+ hint.into()
+ }
+
+ fn highlight<'l>(&self, line: &'l str, pos: usize) -> Cow<'l, str> {
+ self.highlighter.highlight(line, pos)
+ }
+
+ fn highlight_candidate<'c>(
+ &self,
+ candidate: &'c str,
+ _completion: rustyline::CompletionType,
+ ) -> Cow<'c, str> {
+ self.highlighter.highlight(candidate, 0)
+ }
+
+ fn highlight_char(&self, line: &str, _: usize) -> bool {
+ !line.is_empty()
+ }
+}
+
+static KEYWORDS: Set<&'static str> = phf_set! {
+ "break",
+ "case",
+ "catch",
+ "class",
+ "const",
+ "continue",
+ "default",
+ "delete",
+ "do",
+ "else",
+ "export",
+ "extends",
+ "finally",
+ "for",
+ "function",
+ "if",
+ "import",
+ "instanceof",
+ "new",
+ "return",
+ "super",
+ "switch",
+ "this",
+ "throw",
+ "try",
+ "typeof",
+ "var",
+ "void",
+ "while",
+ "with",
+ "yield",
+ "await",
+ "enum",
+ "let",
+};
+
+struct LineHighlighter;
+
+impl Highlighter for LineHighlighter {
+ fn highlight<'l>(&self, line: &'l str, _: usize) -> Cow<'l, str> {
+ let mut coloured = line.to_string();
+
+ let reg = Regex::new(
+ r#"(?x)
+ (?P\b[$_\p{ID_Start}][$_\p{ID_Continue}\u{200C}\u{200D}]*\b) |
+ (?P"([^"\\]|\\.)*") |
+ (?P'([^'\\]|\\.)*') |
+ (?P`([^`\\]|\\.)*`) |
+ (?P[+\-/*%~^!&|=<>;:]) |
+ (?P0[bB][01](_?[01])*n?|0[oO][0-7](_?[0-7])*n?|0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?|(([0-9](_?[0-9])*\.([0-9](_?[0-9])*)?)|(([0-9](_?[0-9])*)?\.[0-9](_?[0-9])*)|([0-9](_?[0-9])*))([eE][+-]?[0-9](_?[0-9])*)?n?)"#,
+ )
+ .expect("could not compile regular expression");
+
+ coloured = reg
+ .replace_all(&coloured, |caps: &Captures<'_>| {
+ if let Some(cap) = caps.name("identifier") {
+ match cap.as_str() {
+ "true" | "false" | "null" | "Infinity" | "globalThis" => {
+ cap.as_str().color(PROPERTY_COLOR).to_string()
+ }
+ "undefined" => cap.as_str().color(UNDEFINED_COLOR).to_string(),
+ identifier if KEYWORDS.contains(identifier) => {
+ cap.as_str().color(KEYWORD_COLOR).bold().to_string()
+ }
+ _ => cap.as_str().color(IDENTIFIER_COLOR).to_string(),
+ }
+ } else if let Some(cap) = caps.name("string_double_quote") {
+ cap.as_str().color(STRING_COLOR).to_string()
+ } else if let Some(cap) = caps.name("string_single_quote") {
+ cap.as_str().color(STRING_COLOR).to_string()
+ } else if let Some(cap) = caps.name("template_literal") {
+ cap.as_str().color(STRING_COLOR).to_string()
+ } else if let Some(cap) = caps.name("op") {
+ cap.as_str().color(OPERATOR_COLOR).to_string()
+ } else if let Some(cap) = caps.name("number") {
+ cap.as_str().color(NUMBER_COLOR).to_string()
+ } else {
+ caps[0].to_string()
+ }
+ })
+ .to_string();
+
+ coloured.into()
+ }
+}
diff --git a/__wasm/wit-bindgen-sample/engine/boa/boa_cli/src/main.rs b/__wasm/wit-bindgen-sample/engine/boa/boa_cli/src/main.rs
new file mode 100644
index 0000000..c72d52b
--- /dev/null
+++ b/__wasm/wit-bindgen-sample/engine/boa/boa_cli/src/main.rs
@@ -0,0 +1,264 @@
+#![doc(
+ html_logo_url = "https://raw.githubusercontent.com/boa-dev/boa/main/assets/logo.svg",
+ html_favicon_url = "https://raw.githubusercontent.com/boa-dev/boa/main/assets/logo.svg"
+)]
+#![cfg_attr(not(test), deny(clippy::unwrap_used))]
+#![warn(
+ clippy::perf,
+ clippy::single_match_else,
+ clippy::dbg_macro,
+ clippy::doc_markdown,
+ clippy::wildcard_imports,
+ clippy::struct_excessive_bools,
+ clippy::doc_markdown,
+ clippy::semicolon_if_nothing_returned,
+ clippy::pedantic
+)]
+#![deny(
+ clippy::all,
+ clippy::cast_lossless,
+ clippy::redundant_closure_for_method_calls,
+ clippy::use_self,
+ clippy::unnested_or_patterns,
+ clippy::trivially_copy_pass_by_ref,
+ clippy::needless_pass_by_value,
+ clippy::match_wildcard_for_single_variants,
+ clippy::map_unwrap_or,
+ unused_qualifications,
+ unused_import_braces,
+ unused_lifetimes,
+ unreachable_pub,
+ trivial_numeric_casts,
+ // rustdoc,
+ missing_debug_implementations,
+ missing_copy_implementations,
+ deprecated_in_future,
+ meta_variable_misuse,
+ non_ascii_idents,
+ rust_2018_compatibility,
+ rust_2018_idioms,
+ future_incompatible,
+ nonstandard_style,
+)]
+#![allow(
+ clippy::module_name_repetitions,
+ clippy::cast_possible_truncation,
+ clippy::cast_sign_loss,
+ clippy::cast_precision_loss,
+ clippy::cast_possible_wrap,
+ clippy::cast_ptr_alignment,
+ clippy::missing_panics_doc,
+ clippy::too_many_lines,
+ clippy::unreadable_literal,
+ clippy::missing_inline_in_public_items,
+ clippy::cognitive_complexity,
+ clippy::must_use_candidate,
+ clippy::missing_errors_doc,
+ clippy::as_conversions,
+ clippy::let_unit_value,
+ rustdoc::missing_doc_code_examples
+)]
+
+use boa_engine::{syntax::ast::node::StatementList, Context};
+use clap::{ArgEnum, Parser};
+use colored::{Color, Colorize};
+use rustyline::{config::Config, error::ReadlineError, EditMode, Editor};
+use std::{fs::read, io, path::PathBuf};
+mod helper;
+
+#[cfg(all(target_arch = "x86_64", target_os = "linux", target_env = "gnu"))]
+#[cfg_attr(
+ all(target_arch = "x86_64", target_os = "linux", target_env = "gnu"),
+ global_allocator
+)]
+static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc;
+
+/// CLI configuration for Boa.
+static CLI_HISTORY: &str = ".boa_history";
+
+const READLINE_COLOR: Color = Color::Cyan;
+
+// Added #[allow(clippy::option_option)] because to StructOpt an Option