Rust编写的JavaScript引擎,该项目是一个试验性质的项目。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

39 lines
1009 B

[package]
name = "boa_cli"
keywords = ["javascript", "compiler", "js", "cli"]
categories = ["command-line-utilities"]
default-run = "boa"
description.workspace = true
version.workspace = true
edition.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
rust-version.workspace = true
[dependencies]
boa_engine = { workspace = true, features = ["deser", "flowgraph", "trace"] }
boa_ast = { workspace = true, features = ["serde"] }
boa_parser.workspace = true
Implement debug object for CLI (#2772) Currently some debugging stuff in JavaScript land is difficult to impossible, like triggering a GC collect, this is not impossible to do in JavaScript the way I triggered it was by creating a huge amount of object `for (let i = 0; i < 100000; ++i) { ({}) }` but this is cumbersome and not guaranteed to trigger a gc. This PR implements `--debug-object` flag that injects the `$boa` debug object in the context, the object is separated into modules currently `gc`, `function`, `object`. We can now do `$boa.gc.collect()`, which force triggers a GC collect. Or sometimes I wanted a trace (the current solution is great, you can trace stuff like `>>> 1 + 1` but that is also it's limitation), it traces everything, I sometimes have a scenario and just want to trace a single function in that scenario, that's why I added the `$boa.function.trace(func, this, ...args)` It only traces the function. ```js >> $boa.function.trace((a, b) => a + b, undefined, 1, 2) -------------------------Compiled Output: ''-------------------------- Location Count Opcode Operands 000000 0000 DefInitArg 0000: 'a' 000005 0001 DefInitArg 0001: 'b' 000010 0002 RestParameterPop 000011 0003 GetName 0000: 'a' 000016 0004 GetName 0001: 'b' 000021 0005 Add 000022 0006 Return 000023 0007 PushUndefined 000024 0008 Return ... (cut for brevity) ... ``` It also implements `$boa.function.flowgraph(func, options)`: ```js $boa.function.flowgraph(func, 'graphviz') $boa.function.flowgraph(func, { format: 'mermaid', direction: 'TopBottom' }) ``` Printing the object pointer: ```js $boa.object.id({}) // '0x566464F33' ``` It currently implements some functionality which we can grow it with our debugging needs since we are not restricted by a spec we can add whatever we want :) I was originally going to implement this in #2723 (but the PR is too big), for shapes having functions like: ```js $boa.shape.type({}) // Shared shape $boa.shape.id({}) // 0x8578FG355 (objects, shape pointer) $boa.shape.flowgraph({}) // printing the shape transition chain, like $boa.function.flowgraph ``` Shapes chains are very hard to debug once they are big... so having this type of debugging capability would make it much easier.
2 years ago
boa_gc.workspace = true
boa_interner.workspace = true
boa_runtime.workspace = true
Bump rustyline from 10.1.1 to 11.0.0 (#2612) Bumps [rustyline](https://github.com/kkawakam/rustyline) from 10.1.1 to 11.0.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/kkawakam/rustyline/releases">rustyline's releases</a>.</em></p> <blockquote> <h2>11.0.0</h2> <h2>What's Changed</h2> <ul> <li>Refactor listeners by <a href="https://github.com/gwenn"><code>@​gwenn</code></a> in <a href="https://github-redirect.dependabot.com/kkawakam/rustyline/pull/666">kkawakam/rustyline#666</a></li> <li>Introduce History trait by <a href="https://github.com/gwenn"><code>@​gwenn</code></a> in <a href="https://github-redirect.dependabot.com/kkawakam/rustyline/pull/604">kkawakam/rustyline#604</a></li> <li>Fix cargo test --no-default-features by <a href="https://github.com/gwenn"><code>@​gwenn</code></a> in <a href="https://github-redirect.dependabot.com/kkawakam/rustyline/pull/667">kkawakam/rustyline#667</a></li> <li>Don't set height for skim by <a href="https://github.com/figsoda"><code>@​figsoda</code></a> in <a href="https://github-redirect.dependabot.com/kkawakam/rustyline/pull/668">kkawakam/rustyline#668</a></li> <li>Turn off skim's default features by <a href="https://github.com/figsoda"><code>@​figsoda</code></a> in <a href="https://github-redirect.dependabot.com/kkawakam/rustyline/pull/669">kkawakam/rustyline#669</a></li> <li>Add derive feature that reexports rustyline-derive's API by <a href="https://github.com/figsoda"><code>@​figsoda</code></a> in <a href="https://github-redirect.dependabot.com/kkawakam/rustyline/pull/670">kkawakam/rustyline#670</a></li> <li>docs: update branch for wez/wezterm by <a href="https://github.com/LeoDog896"><code>@​LeoDog896</code></a> in <a href="https://github-redirect.dependabot.com/kkawakam/rustyline/pull/674">kkawakam/rustyline#674</a></li> <li>Upgrade to Rust edition 2021 by <a href="https://github.com/gwenn"><code>@​gwenn</code></a> in <a href="https://github-redirect.dependabot.com/kkawakam/rustyline/pull/675">kkawakam/rustyline#675</a></li> <li>Replace memchr::memchr by matches! by <a href="https://github.com/gwenn"><code>@​gwenn</code></a> in <a href="https://github-redirect.dependabot.com/kkawakam/rustyline/pull/676">kkawakam/rustyline#676</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/figsoda"><code>@​figsoda</code></a> made their first contribution in <a href="https://github-redirect.dependabot.com/kkawakam/rustyline/pull/668">kkawakam/rustyline#668</a></li> <li><a href="https://github.com/LeoDog896"><code>@​LeoDog896</code></a> made their first contribution in <a href="https://github-redirect.dependabot.com/kkawakam/rustyline/pull/674">kkawakam/rustyline#674</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/kkawakam/rustyline/compare/v10.1.0...v11.0.0">https://github.com/kkawakam/rustyline/compare/v10.1.0...v11.0.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/kkawakam/rustyline/commit/0384654d4274f152897e4fdd8bf8d23c75bf1b95"><code>0384654</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/kkawakam/rustyline/issues/682">#682</a> from gwenn/11.0.0</li> <li><a href="https://github.com/kkawakam/rustyline/commit/a63a2494c5f60e235a625457d32d22c1cd8c6502"><code>a63a249</code></a> Prepare next release</li> <li><a href="https://github.com/kkawakam/rustyline/commit/36f273901142d7a32791822e7bdff4083095e2b9"><code>36f2739</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/kkawakam/rustyline/issues/680">#680</a> from figsoda/unsorted</li> <li><a href="https://github.com/kkawakam/rustyline/commit/5486779fef20637127c9534438edd046242a37f2"><code>5486779</code></a> Add FilenameCompleter::complete_path_unsorted</li> <li><a href="https://github.com/kkawakam/rustyline/commit/b71975d9ea826ba8593381f2c95675eada6fc602"><code>b71975d</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/kkawakam/rustyline/issues/679">#679</a> from figsoda/clone</li> <li><a href="https://github.com/kkawakam/rustyline/commit/792a828c94236db9a783823945e2ff7b09b5140c"><code>792a828</code></a> Implement Clone for Pair</li> <li><a href="https://github.com/kkawakam/rustyline/commit/1986b16a431d7e73f7e9c4b3ce9a2148fce2814a"><code>1986b16</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/kkawakam/rustyline/issues/676">#676</a> from gwenn/memchr-to-matches</li> <li><a href="https://github.com/kkawakam/rustyline/commit/c75f56de4d70dd743142e8098dfdbea0588c2969"><code>c75f56d</code></a> Replace memchr::memchr by matches!</li> <li><a href="https://github.com/kkawakam/rustyline/commit/45b9e3d3c2dff76f265f720663532aafe0e009b9"><code>45b9e3d</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/kkawakam/rustyline/issues/675">#675</a> from gwenn/edition</li> <li><a href="https://github.com/kkawakam/rustyline/commit/6830d8ae48802e947690e7fa117db71aab02689c"><code>6830d8a</code></a> Fix clippy warning on windows</li> <li>Additional commits viewable in <a href="https://github.com/kkawakam/rustyline/compare/v10.1.1...v11.0.0">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=rustyline&package-manager=cargo&previous-version=10.1.1&new-version=11.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Co-authored-by: jedel1043 <jedel0124@gmail.com>
2 years ago
rustyline = { version = "11.0.0", features = ["derive"]}
clap = { version = "4.3.4", features = ["derive"] }
serde_json = "1.0.97"
colored = "2.0.0"
regex = "1.8.4"
Bump phf from 0.11.0 to 0.11.1 (#2226) Bumps [phf](https://github.com/rust-phf/rust-phf) from 0.11.0 to 0.11.1. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/rust-phf/rust-phf/releases">phf's releases</a>.</em></p> <blockquote> <h2>phf v0.11.1</h2> <h3>Chore</h3> <ul> <li><!-- raw HTML omitted --> point to local crates for now</li> </ul> <h3>Documentation</h3> <ul> <li>state allowed key expressions in <code>phf_map</code></li> </ul> <h3>Bug Fixes</h3> <ul> <li> <p>remove now-unnecessary <code>proc-macro-hack</code> crate usage Resolves <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/issues/255">rust-phf/rust-phf#255</a>.</p> <p>This resolves an issue with Windows Defender identifying <code>proc-macro-hack</code> as threats. It also sheds a depedency that is no longer necessary, now that the MSRV of this crate is 1.46 and <code>proc-macro-hack</code> is only useful for providing support for Rust versions 1.31 through 1.45. Per <a href="https://github.com/dtolnay/proc-macro-hack">upstream</a>:</p> <blockquote> <p><strong>Note:</strong> <em>As of Rust 1.45 this crate is superseded by native support for #[proc_macro] in expression position. Only consider using this crate if you care about supporting compilers between 1.31 and 1.45.</em></p> </blockquote> </li> </ul> <h3>Commit Statistics</h3> <ul> <li>234 commits contributed to the release over the course of 2957 calendar days.</li> <li>3 commits where understood as <a href="https://www.conventionalcommits.org">conventional</a>.</li> <li>1 unique issue was worked on: <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/issues/249">#249</a></li> </ul> <h3>Commit Details</h3> <!-- raw HTML omitted --> <!-- raw HTML omitted --> <ul> <li><strong><a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/issues/249">#249</a></strong> <ul> <li>Add <code>Map::new()</code> function and <code>Default</code> implementation to create new, empty map (baac7d0)</li> </ul> </li> <li><strong>Uncategorized</strong> <ul> <li>Replace handmade changelog with generated one by <code>cargo-smart-release</code> (cb84cf6)</li> <li>Add category to crates (32a72c3)</li> <li>Update repository links on Cargo.toml (1af3b0f)</li> <li>Release 0.11.0 (d2efdc0)</li> <li>Merge pull request <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/issues/257">#257</a> from JohnTitor/edition-2021 (36ec885)</li> <li>Make crates edition 2021 (b9d25da)</li> <li>remove now-unnecessary <code>proc-macro-hack</code> crate usage (caf1ce7)</li> <li>point to local crates for now (92e7b43)</li> <li>Merge pull request <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/issues/253">#253</a> from JohnTitor/action-tweaks (a3e04bc)</li> <li>Fix some Clippy warnings (71fd47c)</li> <li>Make &quot;unicase + macros&quot; features work (11bb242)</li> <li>Prepare 0.10.1 release (4cc8344)</li> </ul> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/rust-phf/rust-phf/blob/master/RELEASE_PROCESS.md">phf's changelog</a>.</em></p> <blockquote> <h1>How to make a new release</h1> <p>Since v0.11.1, this repository uses <a href="https://crates.io/crates/cargo-smart-release"><code>cargo-smart-release</code></a> to release crates.</p> <h2>Installation</h2> <pre lang="sh"><code>cargo install cargo-smart-release </code></pre> <h2>Before running <code>cargo-smart-release</code></h2> <p>If the next version has a major change or bumps MSRV, i.e. it increases a minor version on <code>v0.Y.Z</code> or a major version on <code>vX.Y.Z</code>, update the versions mentioned on the README and doc comments (and CI config if it touches MSRV).</p> <h2>Run <code>cargo-smart-release</code></h2> <p>First, just run:</p> <pre lang="sh"><code>cargo smart-release phf phf_codegen phf_generator phf_macros phf_shared </code></pre> <p>This would show what <code>cargo-smart-release</code> would do, e.g. how it updates the version number, changelog, etc. If you satisfy the output, run:</p> <pre lang="sh"><code>cargo smart-release -u -e phf phf_codegen phf_generator phf_macros phf_shared </code></pre> <p>This would make actual releases. <code>-e</code> means that it executes actual releases and <code>-u</code> means that it always updates crates-index. <code>cargo-smart-release</code> also takes care of the Git tags.</p> <p>After executing it, ensure that all the releases are actually happened and the tags are pushed. If all the things are fine, that's it!</p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/rust-phf/rust-phf/commit/3897b21c6d38e5adcaf9110b4bb33c19f6b41977"><code>3897b21</code></a> Release phf_shared v0.11.1, phf_generator v0.11.1, phf_macros v0.11.1, phf v0...</li> <li><a href="https://github.com/rust-phf/rust-phf/commit/3c6af3f7d783a6018070944a00fa29e0ff48b0dc"><code>3c6af3f</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/issues/265">#265</a> from rust-phf/unpin-criterion</li> <li><a href="https://github.com/rust-phf/rust-phf/commit/27a2ce4b07ddc68c45e2faccbfef52d22375c1b0"><code>27a2ce4</code></a> phf_generator: Unpin the <code>criterion</code> dependency</li> <li><a href="https://github.com/rust-phf/rust-phf/commit/97f997d2be827ca636a29046c78e2c09c5c62650"><code>97f997d</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/issues/264">#264</a> from rust-phf/tweak-changelog</li> <li><a href="https://github.com/rust-phf/rust-phf/commit/cb84cf6636ab52823c53e70d6abeac8f648a3482"><code>cb84cf6</code></a> Replace handmade changelog with generated one by <code>cargo-smart-release</code></li> <li><a href="https://github.com/rust-phf/rust-phf/commit/d441940cbb1a4653d2b33467e2449e6178ad53a7"><code>d441940</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/issues/263">#263</a> from lopopolo/lopopolo/rand-no-default-features</li> <li><a href="https://github.com/rust-phf/rust-phf/commit/deefda1cdff6ced54526ddb702b13282e0c8c66b"><code>deefda1</code></a> Disable default features for rand dep in phf_generator</li> <li><a href="https://github.com/rust-phf/rust-phf/commit/1407ebe536b39611db92d765ddec4de0e6c8a16e"><code>1407ebe</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/rust-phf/rust-phf/issues/260">#260</a> from JohnTitor/fix-repo-link</li> <li><a href="https://github.com/rust-phf/rust-phf/commit/488b1638d29a1f27add32a324fd75b8c729782a5"><code>488b163</code></a> Fix a typo</li> <li><a href="https://github.com/rust-phf/rust-phf/commit/e0b34fa0a697f45f2c41a875bf84b78a6d3ce079"><code>e0b34fa</code></a> Add README.md for some crates</li> <li>Additional commits viewable in <a href="https://github.com/rust-phf/rust-phf/compare/v0.11.0...phf-v0.11.1">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=phf&package-manager=cargo&previous-version=0.11.0&new-version=0.11.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
2 years ago
phf = { version = "0.11.1", features = ["macros"] }
pollster = "0.3.0"
[features]
default = ["boa_engine/annex-b", "boa_engine/intl"]
[target.x86_64-unknown-linux-gnu.dependencies]
Bump jemallocator from 0.3.2 to 0.5.0 (#2088) Bumps [jemallocator](https://github.com/tikv/jemallocator) from 0.3.2 to 0.5.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/tikv/jemallocator/releases">jemallocator's releases</a>.</em></p> <blockquote> <h2>0.4.3</h2> <ul> <li>Added riscv64 support (<a href="https://github-redirect.dependabot.com/tikv/jemallocator/issues/14">#14</a>)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/tikv/jemallocator/blob/main/CHANGELOG.md">jemallocator's changelog</a>.</em></p> <blockquote> <h1>0.5.0 - 2022-05-19</h1> <ul> <li>Update jemalloc to 5.3.0 (<a href="https://github-redirect.dependabot.com/tikv/jemallocator/issues/23">#23</a>)</li> </ul> <h1>0.4.3 - 2022-02-21</h1> <ul> <li>Added riscv64 support (<a href="https://github-redirect.dependabot.com/tikv/jemallocator/issues/14">#14</a>)</li> </ul> <h1>0.4.2 - 2021-08-09</h1> <ul> <li>Fixed prof not working under certain condition (<a href="https://github-redirect.dependabot.com/tikv/jemallocator/issues/9">#9</a>) (<a href="https://github-redirect.dependabot.com/tikv/jemallocator/issues/12">#12</a>)</li> <li>Updated paste to 1 (<a href="https://github-redirect.dependabot.com/tikv/jemallocator/issues/11">#11</a>)</li> </ul> <h1>0.4.1 - 2020-11-16</h1> <ul> <li>Updated jemalloc to fix deadlock during initialization</li> <li>Fixed failure of generating docs on release version</li> </ul> <h1>0.4.0 - 2020-07-21</h1> <ul> <li>Forked from jemallocator master</li> <li>Upgraded jemalloc to 5.2.1 (<a href="https://github-redirect.dependabot.com/tikv/jemallocator/issues/1">#1</a>)</li> <li>Fixed wrong version in generated C header (<a href="https://github-redirect.dependabot.com/tikv/jemallocator/issues/1">#1</a>)</li> <li>Upgraded project to 2018 edition (<a href="https://github-redirect.dependabot.com/tikv/jemallocator/issues/2">#2</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/tikv/jemallocator/commits">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=jemallocator&package-manager=cargo&previous-version=0.3.2&new-version=0.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
3 years ago
jemallocator = "0.5.0"
[[bin]]
name = "boa"
5 years ago
doc = false
path = "src/main.rs"