Full Code of boa-dev/boa for AI

main 58a245878906 cached
961 files
8.9 MB
2.4M tokens
12098 symbols
1 requests
Download .txt
Showing preview only (9,508K chars total). Download the full file or copy to clipboard to get everything.
Repository: boa-dev/boa
Branch: main
Commit: 58a245878906
Files: 961
Total size: 8.9 MB

Directory structure:
gitextract_xo92gz2d/

├── .cargo/
│   └── config.toml
├── .config/
│   └── nextest.toml
├── .editorconfig
├── .gitattributes
├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   ├── config.yml
│   │   ├── custom.md
│   │   └── feature_request.md
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── codecov.yml
│   ├── dependabot.yml
│   ├── labeler.yml
│   ├── release.yml
│   └── workflows/
│       ├── codeql.yml
│       ├── labeler.yml
│       ├── nightly_build.yml
│       ├── pr_management.yml
│       ├── pull_request.yml
│       ├── release.yml
│       ├── rust.yml
│       ├── security_audit.yml
│       ├── test262.yml
│       ├── test262_comment.yml
│       ├── test262_release.yml
│       └── webassembly.yml
├── .gitignore
├── .husky/
│   └── pre-push
├── .prettierignore
├── .vscode/
│   ├── launch.json
│   └── tasks.json
├── ABOUT.md
├── CHANGELOG.md
├── CODEOWNERS
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Cargo.toml
├── LICENSE-MIT
├── LICENSE-UNLICENSE
├── Makefile.toml
├── PR_MESSAGE_EXPECT_EXPRESSION.md
├── README.md
├── SECURITY.md
├── benches/
│   ├── Cargo.toml
│   ├── benches/
│   │   └── scripts.rs
│   ├── scripts/
│   │   ├── basic/
│   │   │   ├── call-loop.js
│   │   │   ├── closure.js
│   │   │   └── nested-loop.js
│   │   ├── closures/
│   │   │   ├── create.js
│   │   │   └── invoke.js
│   │   ├── intl/
│   │   │   ├── collator-compare.js
│   │   │   ├── collator-construction.js
│   │   │   ├── datetimeformat-construction.js
│   │   │   ├── datetimeformat-format.js
│   │   │   ├── datetimeformat-with-options.js
│   │   │   ├── datetimeformat_resolved_options.js
│   │   │   ├── listformat-construction.js
│   │   │   ├── listformat-format.js
│   │   │   ├── numberformat-construction.js
│   │   │   ├── numberformat-different-options.js
│   │   │   ├── pluralrules-construction.js
│   │   │   ├── pluralrules-select.js
│   │   │   ├── segmenter-construction.js
│   │   │   └── segmenter-segment.js
│   │   ├── properties/
│   │   │   └── access.js
│   │   ├── prototypes/
│   │   │   └── chain.js
│   │   ├── strings/
│   │   │   ├── concat.js
│   │   │   ├── replace.js
│   │   │   ├── slice.js
│   │   │   └── split.js
│   │   └── v8-benches/
│   │       ├── README.md
│   │       ├── crypto.js
│   │       ├── deltablue.js
│   │       ├── earley-boyer.js
│   │       ├── navier-stokes.js
│   │       ├── raytrace.js
│   │       ├── regexp.js
│   │       ├── richards.js
│   │       └── splay.js
│   └── src/
│       └── lib.rs
├── cli/
│   ├── ABOUT.md
│   ├── Cargo.toml
│   ├── README.md
│   └── src/
│       ├── debug/
│       │   ├── function.rs
│       │   ├── gc.rs
│       │   ├── limits.rs
│       │   ├── mod.rs
│       │   ├── object.rs
│       │   ├── optimizer.rs
│       │   ├── realm.rs
│       │   ├── shape.rs
│       │   └── string.rs
│       ├── executor.rs
│       ├── helper.rs
│       ├── logger.rs
│       └── main.rs
├── clippy.toml
├── core/
│   ├── ast/
│   │   ├── ABOUT.md
│   │   ├── Cargo.toml
│   │   ├── src/
│   │   │   ├── declaration/
│   │   │   │   ├── export.rs
│   │   │   │   ├── import.rs
│   │   │   │   ├── mod.rs
│   │   │   │   └── variable.rs
│   │   │   ├── expression/
│   │   │   │   ├── access.rs
│   │   │   │   ├── await.rs
│   │   │   │   ├── call.rs
│   │   │   │   ├── identifier.rs
│   │   │   │   ├── import_meta.rs
│   │   │   │   ├── literal/
│   │   │   │   │   ├── array.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── object.rs
│   │   │   │   │   └── template.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── new.rs
│   │   │   │   ├── new_target.rs
│   │   │   │   ├── operator/
│   │   │   │   │   ├── assign/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── op.rs
│   │   │   │   │   ├── binary/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── op.rs
│   │   │   │   │   ├── conditional.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── unary/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── op.rs
│   │   │   │   │   └── update/
│   │   │   │   │       ├── mod.rs
│   │   │   │   │       └── op.rs
│   │   │   │   ├── optional.rs
│   │   │   │   ├── parenthesized.rs
│   │   │   │   ├── regexp.rs
│   │   │   │   ├── spread.rs
│   │   │   │   ├── tagged_template.rs
│   │   │   │   ├── this.rs
│   │   │   │   └── yield.rs
│   │   │   ├── function/
│   │   │   │   ├── arrow_function.rs
│   │   │   │   ├── async_arrow_function.rs
│   │   │   │   ├── async_function.rs
│   │   │   │   ├── async_generator.rs
│   │   │   │   ├── class.rs
│   │   │   │   ├── generator.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── ordinary_function.rs
│   │   │   │   └── parameters.rs
│   │   │   ├── keyword/
│   │   │   │   ├── mod.rs
│   │   │   │   └── tests.rs
│   │   │   ├── lib.rs
│   │   │   ├── module_item_list/
│   │   │   │   └── mod.rs
│   │   │   ├── operations/
│   │   │   │   ├── mod.rs
│   │   │   │   └── tests.rs
│   │   │   ├── pattern.rs
│   │   │   ├── position.rs
│   │   │   ├── property.rs
│   │   │   ├── punctuator/
│   │   │   │   ├── mod.rs
│   │   │   │   └── tests.rs
│   │   │   ├── scope.rs
│   │   │   ├── scope_analyzer.rs
│   │   │   ├── source.rs
│   │   │   ├── source_text.rs
│   │   │   ├── statement/
│   │   │   │   ├── block.rs
│   │   │   │   ├── if.rs
│   │   │   │   ├── iteration/
│   │   │   │   │   ├── break.rs
│   │   │   │   │   ├── continue.rs
│   │   │   │   │   ├── do_while_loop.rs
│   │   │   │   │   ├── for_in_loop.rs
│   │   │   │   │   ├── for_loop.rs
│   │   │   │   │   ├── for_of_loop.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── while_loop.rs
│   │   │   │   ├── labelled.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── return.rs
│   │   │   │   ├── switch.rs
│   │   │   │   ├── throw.rs
│   │   │   │   ├── try.rs
│   │   │   │   └── with.rs
│   │   │   ├── statement_list.rs
│   │   │   └── visitor.rs
│   │   └── tests/
│   │       └── scope.rs
│   ├── engine/
│   │   ├── ABOUT.md
│   │   ├── Cargo.toml
│   │   ├── benches/
│   │   │   ├── README.md
│   │   │   ├── bench_scripts/
│   │   │   │   ├── arithmetic_operations.js
│   │   │   │   ├── array_access.js
│   │   │   │   ├── array_create.js
│   │   │   │   ├── array_pop.js
│   │   │   │   ├── boolean_object_access.js
│   │   │   │   ├── clean_js.js
│   │   │   │   ├── fibonacci.js
│   │   │   │   ├── for_loop.js
│   │   │   │   ├── mini_js.js
│   │   │   │   ├── number_object_access.js
│   │   │   │   ├── object_creation.js
│   │   │   │   ├── object_prop_access_const.js
│   │   │   │   ├── object_prop_access_dyn.js
│   │   │   │   ├── regexp.js
│   │   │   │   ├── regexp_creation.js
│   │   │   │   ├── regexp_literal.js
│   │   │   │   ├── regexp_literal_creation.js
│   │   │   │   ├── string_code_point_sum.js
│   │   │   │   ├── string_compare.js
│   │   │   │   ├── string_concat.js
│   │   │   │   ├── string_copy.js
│   │   │   │   ├── string_object_access.js
│   │   │   │   └── symbol_creation.js
│   │   │   └── full.rs
│   │   ├── src/
│   │   │   ├── bigint.rs
│   │   │   ├── builtins/
│   │   │   │   ├── array/
│   │   │   │   │   ├── array_iterator.rs
│   │   │   │   │   ├── from_async.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── array_buffer/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── shared.rs
│   │   │   │   │   ├── tests.rs
│   │   │   │   │   └── utils.rs
│   │   │   │   ├── async_function/
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── async_generator/
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── async_generator_function/
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── atomics/
│   │   │   │   │   ├── futex.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── bigint/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── boolean/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── builder.rs
│   │   │   │   ├── dataview/
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── date/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── tests.rs
│   │   │   │   │   └── utils.rs
│   │   │   │   ├── error/
│   │   │   │   │   ├── aggregate.rs
│   │   │   │   │   ├── eval.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── range.rs
│   │   │   │   │   ├── reference.rs
│   │   │   │   │   ├── syntax.rs
│   │   │   │   │   ├── tests.rs
│   │   │   │   │   ├── type.rs
│   │   │   │   │   └── uri.rs
│   │   │   │   ├── escape/
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── eval/
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── finalization_registry/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── function/
│   │   │   │   │   ├── arguments.rs
│   │   │   │   │   ├── bound.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── generator/
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── generator_function/
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── intl/
│   │   │   │   │   ├── collator/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── options.rs
│   │   │   │   │   ├── date_time_format/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── options.rs
│   │   │   │   │   │   └── tests.rs
│   │   │   │   │   ├── list_format/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── options.rs
│   │   │   │   │   ├── locale/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── options.rs
│   │   │   │   │   │   ├── tests.rs
│   │   │   │   │   │   └── utils.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── number_format/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── options.rs
│   │   │   │   │   │   └── tests.rs
│   │   │   │   │   ├── options.rs
│   │   │   │   │   ├── plural_rules/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── options.rs
│   │   │   │   │   └── segmenter/
│   │   │   │   │       ├── iterator.rs
│   │   │   │   │       ├── mod.rs
│   │   │   │   │       ├── options.rs
│   │   │   │   │       └── segments.rs
│   │   │   │   ├── is_html_dda.rs
│   │   │   │   ├── iterable/
│   │   │   │   │   ├── async_from_sync_iterator.rs
│   │   │   │   │   ├── iterator_constructor.rs
│   │   │   │   │   ├── iterator_helper.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── tests.rs
│   │   │   │   │   └── wrap_for_valid_iterator.rs
│   │   │   │   ├── json/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── map/
│   │   │   │   │   ├── map_iterator.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── ordered_map.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── math/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── number/
│   │   │   │   │   ├── conversions.rs
│   │   │   │   │   ├── globals.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── object/
│   │   │   │   │   ├── for_in_iterator.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── options.rs
│   │   │   │   ├── promise/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── proxy/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── reflect/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── regexp/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── regexp_string_iterator.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── set/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── ordered_set.rs
│   │   │   │   │   ├── set_iterator.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── string/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── string_iterator.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── symbol/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── temporal/
│   │   │   │   │   ├── calendar/
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── duration/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── tests.rs
│   │   │   │   │   ├── error.rs
│   │   │   │   │   ├── instant/
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── now.rs
│   │   │   │   │   ├── options.rs
│   │   │   │   │   ├── plain_date/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── tests.rs
│   │   │   │   │   ├── plain_date_time/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── tests.rs
│   │   │   │   │   ├── plain_month_day/
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── plain_time/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── tests.rs
│   │   │   │   │   ├── plain_year_month/
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── tests.rs
│   │   │   │   │   └── zoneddatetime/
│   │   │   │   │       └── mod.rs
│   │   │   │   ├── typed_array/
│   │   │   │   │   ├── builtin.rs
│   │   │   │   │   ├── element/
│   │   │   │   │   │   ├── atomic.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── object.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── uri/
│   │   │   │   │   ├── consts.rs
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── weak/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── weak_ref.rs
│   │   │   │   ├── weak_map/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   └── weak_set/
│   │   │   │       ├── mod.rs
│   │   │   │       └── tests.rs
│   │   │   ├── bytecompiler/
│   │   │   │   ├── class.rs
│   │   │   │   ├── declaration/
│   │   │   │   │   ├── declaration_pattern.rs
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── declarations.rs
│   │   │   │   ├── env.rs
│   │   │   │   ├── expression/
│   │   │   │   │   ├── assign.rs
│   │   │   │   │   ├── binary.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── object_literal.rs
│   │   │   │   │   ├── unary.rs
│   │   │   │   │   └── update.rs
│   │   │   │   ├── function.rs
│   │   │   │   ├── generator.rs
│   │   │   │   ├── jump_control.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── module.rs
│   │   │   │   ├── register.rs
│   │   │   │   ├── statement/
│   │   │   │   │   ├── block.rs
│   │   │   │   │   ├── break.rs
│   │   │   │   │   ├── continue.rs
│   │   │   │   │   ├── if.rs
│   │   │   │   │   ├── labelled.rs
│   │   │   │   │   ├── loop.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── switch.rs
│   │   │   │   │   ├── try.rs
│   │   │   │   │   └── with.rs
│   │   │   │   └── utils.rs
│   │   │   ├── class.rs
│   │   │   ├── context/
│   │   │   │   ├── hooks.rs
│   │   │   │   ├── icu.rs
│   │   │   │   ├── intrinsics.rs
│   │   │   │   ├── mod.rs
│   │   │   │   └── time.rs
│   │   │   ├── environments/
│   │   │   │   ├── mod.rs
│   │   │   │   ├── runtime/
│   │   │   │   │   ├── declarative/
│   │   │   │   │   │   ├── function.rs
│   │   │   │   │   │   ├── global.rs
│   │   │   │   │   │   ├── lexical.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── module.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── private.rs
│   │   │   │   └── tests.rs
│   │   │   ├── error/
│   │   │   │   ├── mod.rs
│   │   │   │   └── tests.rs
│   │   │   ├── host_defined.rs
│   │   │   ├── interop/
│   │   │   │   ├── into_js_arguments.rs
│   │   │   │   ├── into_js_function_impls.rs
│   │   │   │   └── mod.rs
│   │   │   ├── job.rs
│   │   │   ├── lib.rs
│   │   │   ├── module/
│   │   │   │   ├── loader/
│   │   │   │   │   ├── embedded.rs
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── namespace.rs
│   │   │   │   ├── source.rs
│   │   │   │   └── synthetic.rs
│   │   │   ├── native_function/
│   │   │   │   ├── continuation.rs
│   │   │   │   └── mod.rs
│   │   │   ├── object/
│   │   │   │   ├── builtins/
│   │   │   │   │   ├── jsarray.rs
│   │   │   │   │   ├── jsarraybuffer.rs
│   │   │   │   │   ├── jsasyncgenerator.rs
│   │   │   │   │   ├── jsdataview.rs
│   │   │   │   │   ├── jsdate.rs
│   │   │   │   │   ├── jsfinalization_registry.rs
│   │   │   │   │   ├── jsfunction.rs
│   │   │   │   │   ├── jsgenerator.rs
│   │   │   │   │   ├── jsgeneratorfunction.rs
│   │   │   │   │   ├── jsmap.rs
│   │   │   │   │   ├── jsmap_iterator.rs
│   │   │   │   │   ├── jspromise.rs
│   │   │   │   │   ├── jsproxy.rs
│   │   │   │   │   ├── jsregexp.rs
│   │   │   │   │   ├── jsset.rs
│   │   │   │   │   ├── jsset_iterator.rs
│   │   │   │   │   ├── jssharedarraybuffer.rs
│   │   │   │   │   ├── jstypedarray.rs
│   │   │   │   │   ├── jsweakmap.rs
│   │   │   │   │   ├── jsweakset.rs
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── datatypes.rs
│   │   │   │   ├── internal_methods/
│   │   │   │   │   ├── immutable_prototype.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── string.rs
│   │   │   │   ├── jsobject.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── operations.rs
│   │   │   │   ├── property_map.rs
│   │   │   │   ├── shape/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── property_table.rs
│   │   │   │   │   ├── root_shape.rs
│   │   │   │   │   ├── shared_shape/
│   │   │   │   │   │   ├── forward_transition.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── template.rs
│   │   │   │   │   │   └── tests.rs
│   │   │   │   │   ├── slot.rs
│   │   │   │   │   └── unique_shape.rs
│   │   │   │   └── tests.rs
│   │   │   ├── optimizer/
│   │   │   │   ├── mod.rs
│   │   │   │   ├── pass/
│   │   │   │   │   ├── constant_folding.rs
│   │   │   │   │   ├── dead_code_elimination.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── strength_reduction.rs
│   │   │   │   └── walker.rs
│   │   │   ├── property/
│   │   │   │   ├── attribute/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── mod.rs
│   │   │   │   └── nonmaxu32.rs
│   │   │   ├── realm.rs
│   │   │   ├── script.rs
│   │   │   ├── spanned_source_text.rs
│   │   │   ├── string.rs
│   │   │   ├── symbol.rs
│   │   │   ├── sys/
│   │   │   │   ├── fallback/
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── js/
│   │   │   │   │   └── mod.rs
│   │   │   │   └── mod.rs
│   │   │   ├── tests/
│   │   │   │   ├── async_generator.rs
│   │   │   │   ├── class.rs
│   │   │   │   ├── control_flow/
│   │   │   │   │   ├── loops.rs
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── env.rs
│   │   │   │   ├── function.rs
│   │   │   │   ├── generators.rs
│   │   │   │   ├── iterators.rs
│   │   │   │   ├── job.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── operators.rs
│   │   │   │   ├── promise.rs
│   │   │   │   ├── spread.rs
│   │   │   │   └── to_string.rs
│   │   │   ├── try_into_js_result_impls.rs
│   │   │   ├── value/
│   │   │   │   ├── conversions/
│   │   │   │   │   ├── convert.rs
│   │   │   │   │   ├── either.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── nullable/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── tests.rs
│   │   │   │   │   ├── serde_json.rs
│   │   │   │   │   ├── try_from_js/
│   │   │   │   │   │   ├── collections.rs
│   │   │   │   │   │   └── tuples.rs
│   │   │   │   │   ├── try_from_js.rs
│   │   │   │   │   └── try_into_js.rs
│   │   │   │   ├── display/
│   │   │   │   │   ├── arguments.rs
│   │   │   │   │   ├── array.rs
│   │   │   │   │   ├── map.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── object.rs
│   │   │   │   │   ├── primitives.rs
│   │   │   │   │   ├── set.rs
│   │   │   │   │   ├── typed_array.rs
│   │   │   │   │   └── value.rs
│   │   │   │   ├── equality.rs
│   │   │   │   ├── hash.rs
│   │   │   │   ├── inner/
│   │   │   │   │   ├── legacy.rs
│   │   │   │   │   └── nan_boxed.rs
│   │   │   │   ├── inner.rs
│   │   │   │   ├── integer.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── operations.rs
│   │   │   │   ├── tests.rs
│   │   │   │   ├── type.rs
│   │   │   │   └── variant.rs
│   │   │   └── vm/
│   │   │       ├── call_frame/
│   │   │       │   └── mod.rs
│   │   │       ├── code_block.rs
│   │   │       ├── completion_record.rs
│   │   │       ├── flowgraph/
│   │   │       │   ├── color.rs
│   │   │       │   ├── edge.rs
│   │   │       │   ├── graph.rs
│   │   │       │   ├── mod.rs
│   │   │       │   └── node.rs
│   │   │       ├── inline_cache/
│   │   │       │   ├── mod.rs
│   │   │       │   └── tests.rs
│   │   │       ├── mod.rs
│   │   │       ├── opcode/
│   │   │       │   ├── args.rs
│   │   │       │   ├── arguments.rs
│   │   │       │   ├── await/
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── binary_ops/
│   │   │       │   │   ├── logical.rs
│   │   │       │   │   ├── macro_defined.rs
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── call/
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── concat/
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── control_flow/
│   │   │       │   │   ├── jump.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   ├── return.rs
│   │   │       │   │   └── throw.rs
│   │   │       │   ├── copy/
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── define/
│   │   │       │   │   ├── class/
│   │   │       │   │   │   ├── getter.rs
│   │   │       │   │   │   ├── method.rs
│   │   │       │   │   │   ├── mod.rs
│   │   │       │   │   │   └── setter.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   └── own_property.rs
│   │   │       │   ├── delete/
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── environment/
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── function.rs
│   │   │       │   ├── generator/
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   └── yield_stm.rs
│   │   │       │   ├── get/
│   │   │       │   │   ├── argument.rs
│   │   │       │   │   ├── function.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   ├── name.rs
│   │   │       │   │   ├── private.rs
│   │   │       │   │   └── property.rs
│   │   │       │   ├── iteration/
│   │   │       │   │   ├── for_in.rs
│   │   │       │   │   ├── get.rs
│   │   │       │   │   ├── iterator.rs
│   │   │       │   │   ├── loop_ops.rs
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── meta/
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── new/
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── nop/
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── object.rs
│   │   │       │   ├── pop/
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── push/
│   │   │       │   │   ├── array.rs
│   │   │       │   │   ├── class/
│   │   │       │   │   │   ├── field.rs
│   │   │       │   │   │   ├── mod.rs
│   │   │       │   │   │   └── private.rs
│   │   │       │   │   ├── environment.rs
│   │   │       │   │   ├── literal.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   ├── numbers.rs
│   │   │       │   │   └── object.rs
│   │   │       │   ├── rest_parameter/
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── set/
│   │   │       │   │   ├── class_prototype.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   ├── name.rs
│   │   │       │   │   ├── private.rs
│   │   │       │   │   └── property.rs
│   │   │       │   ├── switch/
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── templates/
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── to/
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── unary_ops/
│   │   │       │   │   ├── decrement.rs
│   │   │       │   │   ├── increment.rs
│   │   │       │   │   ├── logical.rs
│   │   │       │   │   └── mod.rs
│   │   │       │   └── value/
│   │   │       │       └── mod.rs
│   │   │       ├── runtime_limits.rs
│   │   │       ├── shadow_stack.rs
│   │   │       ├── source_info/
│   │   │       │   ├── builder/
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   └── tests.rs
│   │   │       │   ├── mod.rs
│   │   │       │   └── tests.rs
│   │   │       └── tests.rs
│   │   └── tests/
│   │       ├── assets/
│   │       │   ├── dir1/
│   │       │   │   ├── file1_1.js
│   │       │   │   └── file1_2.js
│   │       │   ├── file1.js
│   │       │   └── gcd.js
│   │       ├── gcd.rs
│   │       ├── imports.rs
│   │       ├── macros.rs
│   │       └── module.rs
│   ├── gc/
│   │   ├── ABOUT.md
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── cell.rs
│   │       ├── internals/
│   │       │   ├── ephemeron_box.rs
│   │       │   ├── gc_box.rs
│   │       │   ├── gc_header.rs
│   │       │   ├── mod.rs
│   │       │   ├── vtable.rs
│   │       │   └── weak_map_box.rs
│   │       ├── lib.rs
│   │       ├── pointers/
│   │       │   ├── ephemeron.rs
│   │       │   ├── gc.rs
│   │       │   ├── mod.rs
│   │       │   ├── weak.rs
│   │       │   └── weak_map.rs
│   │       ├── test/
│   │       │   ├── allocation.rs
│   │       │   ├── cell.rs
│   │       │   ├── erased.rs
│   │       │   ├── mod.rs
│   │       │   ├── std_types.rs
│   │       │   ├── weak.rs
│   │       │   └── weak_map.rs
│   │       └── trace.rs
│   ├── icu_provider/
│   │   ├── ABOUT.md
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── data/
│   │   │   ├── icu_casemap.postcard
│   │   │   ├── icu_collator.postcard
│   │   │   ├── icu_datetime.postcard
│   │   │   ├── icu_decimal.postcard
│   │   │   ├── icu_list.postcard
│   │   │   ├── icu_locale.postcard
│   │   │   ├── icu_normalizer.postcard
│   │   │   ├── icu_plurals.postcard
│   │   │   ├── icu_segmenter.postcard
│   │   │   └── icu_time.postcard
│   │   └── src/
│   │       └── lib.rs
│   ├── interner/
│   │   ├── ABOUT.md
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── fixed_string.rs
│   │       ├── interned_str.rs
│   │       ├── lib.rs
│   │       ├── raw.rs
│   │       ├── sym.rs
│   │       └── tests.rs
│   ├── macros/
│   │   ├── ABOUT.md
│   │   ├── Cargo.toml
│   │   ├── src/
│   │   │   ├── class.rs
│   │   │   ├── embedded_module_loader.rs
│   │   │   ├── lib.rs
│   │   │   ├── module.rs
│   │   │   ├── utils.rs
│   │   │   └── value.rs
│   │   └── tests/
│   │       └── str.rs
│   ├── parser/
│   │   ├── ABOUT.md
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── error/
│   │       │   ├── mod.rs
│   │       │   └── tests.rs
│   │       ├── lexer/
│   │       │   ├── comment.rs
│   │       │   ├── cursor.rs
│   │       │   ├── error.rs
│   │       │   ├── identifier.rs
│   │       │   ├── mod.rs
│   │       │   ├── number.rs
│   │       │   ├── operator.rs
│   │       │   ├── private_identifier.rs
│   │       │   ├── regex.rs
│   │       │   ├── spread.rs
│   │       │   ├── string.rs
│   │       │   ├── template.rs
│   │       │   ├── tests.rs
│   │       │   └── token.rs
│   │       ├── lib.rs
│   │       ├── parser/
│   │       │   ├── cursor/
│   │       │   │   ├── buffered_lexer/
│   │       │   │   │   ├── mod.rs
│   │       │   │   │   └── tests.rs
│   │       │   │   └── mod.rs
│   │       │   ├── expression/
│   │       │   │   ├── assignment/
│   │       │   │   │   ├── arrow_function.rs
│   │       │   │   │   ├── async_arrow_function.rs
│   │       │   │   │   ├── conditional.rs
│   │       │   │   │   ├── exponentiation.rs
│   │       │   │   │   ├── mod.rs
│   │       │   │   │   └── yield.rs
│   │       │   │   ├── await_expr.rs
│   │       │   │   ├── fpl_or_exp.rs
│   │       │   │   ├── identifiers.rs
│   │       │   │   ├── left_hand_side/
│   │       │   │   │   ├── arguments.rs
│   │       │   │   │   ├── call.rs
│   │       │   │   │   ├── member.rs
│   │       │   │   │   ├── mod.rs
│   │       │   │   │   ├── optional/
│   │       │   │   │   │   ├── mod.rs
│   │       │   │   │   │   └── tests.rs
│   │       │   │   │   ├── template.rs
│   │       │   │   │   └── tests.rs
│   │       │   │   ├── mod.rs
│   │       │   │   ├── primary/
│   │       │   │   │   ├── array_initializer/
│   │       │   │   │   │   ├── mod.rs
│   │       │   │   │   │   └── tests.rs
│   │       │   │   │   ├── async_function_expression/
│   │       │   │   │   │   ├── mod.rs
│   │       │   │   │   │   └── tests.rs
│   │       │   │   │   ├── async_generator_expression/
│   │       │   │   │   │   ├── mod.rs
│   │       │   │   │   │   └── tests.rs
│   │       │   │   │   ├── class_expression/
│   │       │   │   │   │   └── mod.rs
│   │       │   │   │   ├── function_expression/
│   │       │   │   │   │   ├── mod.rs
│   │       │   │   │   │   └── tests.rs
│   │       │   │   │   ├── generator_expression/
│   │       │   │   │   │   ├── mod.rs
│   │       │   │   │   │   └── tests.rs
│   │       │   │   │   ├── mod.rs
│   │       │   │   │   ├── object_initializer/
│   │       │   │   │   │   ├── mod.rs
│   │       │   │   │   │   └── tests.rs
│   │       │   │   │   ├── template/
│   │       │   │   │   │   └── mod.rs
│   │       │   │   │   └── tests.rs
│   │       │   │   ├── tests.rs
│   │       │   │   ├── unary.rs
│   │       │   │   └── update.rs
│   │       │   ├── function/
│   │       │   │   ├── mod.rs
│   │       │   │   └── tests.rs
│   │       │   ├── mod.rs
│   │       │   ├── statement/
│   │       │   │   ├── block/
│   │       │   │   │   ├── mod.rs
│   │       │   │   │   └── tests.rs
│   │       │   │   ├── break_stm/
│   │       │   │   │   ├── mod.rs
│   │       │   │   │   └── tests.rs
│   │       │   │   ├── continue_stm/
│   │       │   │   │   ├── mod.rs
│   │       │   │   │   └── tests.rs
│   │       │   │   ├── declaration/
│   │       │   │   │   ├── export.rs
│   │       │   │   │   ├── hoistable/
│   │       │   │   │   │   ├── async_function_decl/
│   │       │   │   │   │   │   ├── mod.rs
│   │       │   │   │   │   │   └── tests.rs
│   │       │   │   │   │   ├── async_generator_decl/
│   │       │   │   │   │   │   ├── mod.rs
│   │       │   │   │   │   │   └── tests.rs
│   │       │   │   │   │   ├── class_decl/
│   │       │   │   │   │   │   ├── mod.rs
│   │       │   │   │   │   │   └── tests.rs
│   │       │   │   │   │   ├── function_decl/
│   │       │   │   │   │   │   ├── mod.rs
│   │       │   │   │   │   │   └── tests.rs
│   │       │   │   │   │   ├── generator_decl/
│   │       │   │   │   │   │   ├── mod.rs
│   │       │   │   │   │   │   └── tests.rs
│   │       │   │   │   │   ├── mod.rs
│   │       │   │   │   │   └── tests.rs
│   │       │   │   │   ├── import.rs
│   │       │   │   │   ├── lexical.rs
│   │       │   │   │   ├── mod.rs
│   │       │   │   │   └── tests.rs
│   │       │   │   ├── expression/
│   │       │   │   │   └── mod.rs
│   │       │   │   ├── if_stm/
│   │       │   │   │   ├── mod.rs
│   │       │   │   │   └── tests.rs
│   │       │   │   ├── iteration/
│   │       │   │   │   ├── do_while_statement.rs
│   │       │   │   │   ├── for_statement.rs
│   │       │   │   │   ├── mod.rs
│   │       │   │   │   ├── tests.rs
│   │       │   │   │   └── while_statement.rs
│   │       │   │   ├── labelled_stm/
│   │       │   │   │   └── mod.rs
│   │       │   │   ├── mod.rs
│   │       │   │   ├── return_stm/
│   │       │   │   │   └── mod.rs
│   │       │   │   ├── switch/
│   │       │   │   │   ├── mod.rs
│   │       │   │   │   └── tests.rs
│   │       │   │   ├── throw/
│   │       │   │   │   ├── mod.rs
│   │       │   │   │   └── tests.rs
│   │       │   │   ├── try_stm/
│   │       │   │   │   ├── catch.rs
│   │       │   │   │   ├── finally.rs
│   │       │   │   │   ├── mod.rs
│   │       │   │   │   └── tests.rs
│   │       │   │   ├── variable/
│   │       │   │   │   └── mod.rs
│   │       │   │   └── with/
│   │       │   │       └── mod.rs
│   │       │   └── tests/
│   │       │       ├── format/
│   │       │       │   ├── declaration.rs
│   │       │       │   ├── expression.rs
│   │       │       │   ├── function/
│   │       │       │   │   ├── class.rs
│   │       │       │   │   └── mod.rs
│   │       │       │   ├── mod.rs
│   │       │       │   └── statement.rs
│   │       │       ├── mod.rs
│   │       │       └── test.js
│   │       └── source/
│   │           ├── mod.rs
│   │           ├── utf16.rs
│   │           └── utf8.rs
│   ├── runtime/
│   │   ├── ABOUT.md
│   │   ├── Cargo.toml
│   │   ├── assets/
│   │   │   └── harness.js
│   │   ├── build.rs
│   │   ├── src/
│   │   │   ├── abort/
│   │   │   │   ├── mod.rs
│   │   │   │   └── tests.rs
│   │   │   ├── base64/
│   │   │   │   ├── mod.rs
│   │   │   │   └── tests.rs
│   │   │   ├── clone/
│   │   │   │   └── mod.rs
│   │   │   ├── console/
│   │   │   │   ├── mod.rs
│   │   │   │   └── tests.rs
│   │   │   ├── extensions.rs
│   │   │   ├── fetch/
│   │   │   │   ├── fetchers.rs
│   │   │   │   ├── headers.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── request.rs
│   │   │   │   ├── response.rs
│   │   │   │   └── tests/
│   │   │   │       ├── e2e.rs
│   │   │   │       ├── headers.rs
│   │   │   │       ├── mod.rs
│   │   │   │       ├── request.rs
│   │   │   │       └── response.rs
│   │   │   ├── interval/
│   │   │   │   └── tests.rs
│   │   │   ├── interval.rs
│   │   │   ├── lib.rs
│   │   │   ├── message/
│   │   │   │   ├── mod.rs
│   │   │   │   ├── senders.rs
│   │   │   │   └── tests.rs
│   │   │   ├── microtask/
│   │   │   │   ├── mod.rs
│   │   │   │   └── tests.rs
│   │   │   ├── process/
│   │   │   │   ├── mod.rs
│   │   │   │   └── tests.rs
│   │   │   ├── store/
│   │   │   │   ├── from.rs
│   │   │   │   ├── mod.rs
│   │   │   │   └── to.rs
│   │   │   ├── text/
│   │   │   │   ├── encodings.rs
│   │   │   │   ├── mod.rs
│   │   │   │   └── tests.rs
│   │   │   ├── url/
│   │   │   │   └── tests.rs
│   │   │   └── url.rs
│   │   └── tests/
│   │       ├── clone/
│   │       │   ├── complex.js
│   │       │   ├── date.js
│   │       │   ├── errors.js
│   │       │   ├── map.js
│   │       │   ├── object.js
│   │       │   ├── regexp.js
│   │       │   ├── set.js
│   │       │   ├── simple.js
│   │       │   └── transfer.js
│   │       └── clone.rs
│   ├── string/
│   │   ├── ABOUT.md
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── builder.rs
│   │       ├── code_point.rs
│   │       ├── common.rs
│   │       ├── display.rs
│   │       ├── iter.rs
│   │       ├── lib.rs
│   │       ├── str.rs
│   │       ├── tests.rs
│   │       ├── type.rs
│   │       └── vtable/
│   │           ├── mod.rs
│   │           ├── sequence.rs
│   │           ├── slice.rs
│   │           └── static.rs
│   └── wintertc/
│       ├── ABOUT.md
│       ├── Cargo.toml
│       └── src/
│           ├── abort/
│           │   └── mod.rs
│           ├── base64/
│           │   └── mod.rs
│           ├── clone/
│           │   └── mod.rs
│           ├── console/
│           │   └── mod.rs
│           ├── encoding/
│           │   └── mod.rs
│           ├── events/
│           │   └── mod.rs
│           ├── fetch/
│           │   └── mod.rs
│           ├── lib.rs
│           ├── microtask/
│           │   └── mod.rs
│           ├── timers/
│           │   └── mod.rs
│           └── url/
│               └── mod.rs
├── docs/
│   ├── boa_object.md
│   ├── bytecompiler.md
│   ├── debugging.md
│   ├── native_object.md
│   ├── profiling.md
│   ├── shapes.md
│   ├── string.md
│   └── vm.md
├── examples/
│   ├── Cargo.toml
│   ├── README.md
│   ├── scripts/
│   │   ├── calc.js
│   │   ├── calctest.js
│   │   ├── enhancedglobal.js
│   │   ├── helloworld.js
│   │   └── modules/
│   │       ├── operations.mjs
│   │       └── trig.mjs
│   └── src/
│       └── bin/
│           ├── classes.rs
│           ├── closures.rs
│           ├── commuter_visitor.rs
│           ├── derive.rs
│           ├── host_defined.rs
│           ├── jsarray.rs
│           ├── jsarraybuffer.rs
│           ├── jsasyncgenerator.rs
│           ├── jsdate.rs
│           ├── jsgeneratorfunction.rs
│           ├── jsmap.rs
│           ├── jspromise.rs
│           ├── jsregexp.rs
│           ├── jsset.rs
│           ├── jstypedarray.rs
│           ├── jsweakmap.rs
│           ├── jsweakset.rs
│           ├── loadfile.rs
│           ├── loadstring.rs
│           ├── module_fetch_async.rs
│           ├── modulehandler.rs
│           ├── modules.rs
│           ├── properties.rs
│           ├── runtime_limits.rs
│           ├── smol_event_loop.rs
│           ├── symbol_visitor.rs
│           ├── synthetic.rs
│           ├── tokio_event_loop.rs
│           └── try_into_js_derive.rs
├── ffi/
│   └── wasm/
│       ├── .gitignore
│       ├── Cargo.toml
│       ├── LICENSE-MIT
│       ├── LICENSE-UNLICENSE
│       ├── README.md
│       ├── src/
│       │   └── lib.rs
│       └── tests/
│           └── web.rs
├── flake.nix
├── make/
│   └── ci.toml
├── package.json
├── test262_config.toml
├── test_wpt_config.toml
├── tests/
│   ├── Cargo.toml
│   ├── fuzz/
│   │   ├── .gitignore
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── fuzz_targets/
│   │       ├── bytecompiler-implied.rs
│   │       ├── common.rs
│   │       ├── parser-idempotency.rs
│   │       └── vm-implied.rs
│   ├── insta-bytecode/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── scripts/
│   │   │   ├── basic-loop.js
│   │   │   ├── double-loop-function.js
│   │   │   ├── loop-hoisting.js
│   │   │   └── new.js
│   │   └── src/
│   │       ├── lib.rs
│   │       └── snapshots/
│   │           ├── insta_bytecode__compile_bytecode@basic-loop.js.snap
│   │           ├── insta_bytecode__compile_bytecode@double-loop-function.js.snap
│   │           ├── insta_bytecode__compile_bytecode@loop-hoisting.js.snap
│   │           └── insta_bytecode__compile_bytecode@new.js.snap
│   ├── macros/
│   │   ├── Cargo.toml
│   │   └── tests/
│   │       ├── assets/
│   │       │   ├── fibonacci.js
│   │       │   └── gcd_callback.js
│   │       ├── class.rs
│   │       ├── derive/
│   │       │   ├── from_js_with.rs
│   │       │   └── simple_struct.rs
│   │       ├── derive.rs
│   │       ├── embedded/
│   │       │   ├── dir1/
│   │       │   │   ├── file3.js
│   │       │   │   └── file4.js
│   │       │   ├── file1.js
│   │       │   └── file2.js
│   │       ├── embedded.rs
│   │       ├── fibonacci.rs
│   │       ├── gcd_callback.rs
│   │       ├── module.rs
│   │       └── optional.rs
│   ├── src/
│   │   └── lib.rs
│   ├── tester/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── edition.rs
│   │       ├── exec/
│   │       │   ├── js262.rs
│   │       │   └── mod.rs
│   │       ├── main.rs
│   │       ├── read.rs
│   │       └── results.rs
│   └── wpt/
│       ├── .gitignore
│       ├── Cargo.toml
│       ├── build.rs
│       └── src/
│           ├── fetcher/
│           │   └── mod.rs
│           ├── lib.rs
│           └── logger/
│               └── mod.rs
├── tools/
│   ├── gen-icu4x-data/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       └── main.rs
│   └── scripts/
│       ├── Cargo.toml
│       └── src/
│           └── bin/
│               └── regenerate-about.rs
├── typos.toml
└── utils/
    ├── small_btree/
    │   ├── ABOUT.md
    │   ├── Cargo.toml
    │   └── src/
    │       ├── entry.rs
    │       └── lib.rs
    └── tag_ptr/
        ├── ABOUT.md
        ├── Cargo.toml
        └── src/
            └── lib.rs

================================================
FILE CONTENTS
================================================

================================================
FILE: .cargo/config.toml
================================================
# TODO: track https://github.com/rust-lang/rust/issues/141626 for a resolution
[target.x86_64-pc-windows-msvc]
rustflags = ['-Csymbol-mangling-version=v0']

[env]
MIRIFLAGS = "-Zmiri-tree-borrows"


================================================
FILE: .config/nextest.toml
================================================
[profile.ci]
# Don't fail fast in CI to run the full test suite.
fail-fast = false


================================================
FILE: .editorconfig
================================================
root = true

[*]
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
indent_size = 4
indent_style = space

[{Makefile,**.mk}]
# Use tabs for indentation (Makefiles require tabs)
indent_style = tab

[{*.js,*.json,*.mjs}]
indent_size = 2

[*.md]
indent_size = 2

[flake.lock]
#


================================================
FILE: .gitattributes
================================================
# 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


================================================
FILE: .github/FUNDING.yml
================================================
open_collective: boa


================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: "\U0001F41B Bug report"
about: Create a report to help us improve
title: ""
type: "Bug"
assignees: ""
---

<!--
Thank you for reporting a bug in Boa! This will make us improve the engine. But first, fill the following template so that we better understand what's happening. Feel free to add or remove sections as you feel appropriate.
-->

**Describe the bug**
A clear and concise description of what the bug is.

<!-- E.g.:
The variable statement is not working as expected, it always adds 10 when assigning a number to a variable"
-->

**To Reproduce**
Steps to reproduce the issue, or JavaScript code that causes this failure.

<!-- E.g.:
This JavaScript code reproduces the issue:
```javascript
var a = 10;
a;
```
-->

**Expected behavior**
Explain what you expected to happen, and what is happening instead.

<!-- E.g.:
Running this code, `a` should be set to `10` and printed, but `a` is instead set to `20`. The expected behaviour can be found in the [ECMAScript specification][spec].

[spec]: https://tc39.es/ecma262/#sec-variable-statement-runtime-semantics-evaluation
-->

**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.

<!-- E.g.:
You can find more information in [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var).
-->


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
  - name: Matrix space
    url: https://matrix.to/#/#boa:matrix.org
    about: Please ask and answer questions here.


================================================
FILE: .github/ISSUE_TEMPLATE/custom.md
================================================
---
name: Custom
about: Open an issue in the repo that is neither a bug or a feature.
title: ""
labels: ""
type: ""
assignees: ""
---

<!--
Thank you for contributing to Boa! Please, let us know how can we help you.
-->

E.g.: I think we should improve the way the JavaScript interpreter works by...


================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: "\U0001F680 Feature request"
about: Suggest a new ECMAScript feature to be implemented, or a new capability of the engine.
title: ""
type: "Feature"
labels: ""
assignees: ""
---

<!--
Thank you for adding a feature request to Boa! As this is an experimental JavaScript engine, there will probably be many ECMAScript features left to implement. In order to understand the feature request as best as possible, please fill the following template. Feel free to add or remove sections as needed.
-->

**ECMASCript feature**
Explain the ECMAScript feature that you'd like to see implemented.

<!-- E.g.:
I would like to see `switch` statement parsing and execution implemented. [ECMAScript specification][spec].

[spec]: https://tc39.es/ecma262/#sec-switch-statement
-->

**Example code**
Give a code example that should work after the implementation of this feature.

<!-- E.g.:
This code should now work and give the expected result:
```javascript
let a = "hello";
let b;
switch (a) {
    case 'hello':
        b = 'world';
        break;
    case 'world':
        b = 'hello';
        break;
    default:
        b = 'hello world';
}
b;
```
The expected output is `world`.
-->


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!---
Thank you for contributing to Boa! Please fill out the template below, and remove or add any
information as you feel necessary.
--->

This Pull Request fixes/closes #{issue_num}.

It changes the following:

-
-
-


================================================
FILE: .github/codecov.yml
================================================
github_checks:
  annotations: false

coverage:
  status:
    project:
      default:
        threshold: 5% # allow 5% coverage variance

    patch: off


================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
  - package-ecosystem: github-actions
    directory: /
    schedule:
      interval: weekly
    labels:
      - "C-Dependencies"
      - "C-Actions"
    groups:
      ci-dependencies:
        applies-to: version-updates
        patterns: ["*"]
        update-types:
        - "minor"
        - "patch"
  - package-ecosystem: cargo
    directory: /
    schedule:
      interval: weekly
    labels:
      - "C-Dependencies"
    groups:
      rust-dependencies:
        applies-to: version-updates
        patterns: ["*"]
        update-types:
        - "minor"
        - "patch"
  - package-ecosystem: cargo
    directory: /tests/fuzz/
    schedule:
      interval: weekly
    labels:
      - "C-Dependencies"
    groups:
      fuzz-dependencies:
        applies-to: version-updates
        patterns: ["*"]
        update-types:
        - "minor"
        - "patch"


================================================
FILE: .github/labeler.yml
================================================
C-Actions:
- changed-files:
  - any-glob-to-any-file:
    - '.github/**'

C-AST:
- changed-files:
  - any-glob-to-any-file: 'core/ast/**'

C-Benchmark:
- changed-files:
  - any-glob-to-any-file:
    - 'benches/**'
    - 'core/engine/benches/**'

C-Builtins:
- all:
  - changed-files:
    - any-glob-to-any-file:
        - 'core/engine/src/builtins/**'
        - 'core/engine/src/object/builtins/**'
    - all-globs-to-all-files:
        - '!core/engine/src/object/builtins/intl/**'

C-CLI:
- changed-files:
  - any-glob-to-any-file:
    - 'cli/**'

C-Dependencies:
- changed-files:
  - any-glob-to-any-file:
    - '**/Cargo.lock'
    - '**/Cargo.toml'

C-Documentation:
- changed-files:
  - any-glob-to-any-file:
    - '**/*.md'

C-FFI:
- changed-files:
  - any-glob-to-any-file:
    - 'ffi/**'

C-GC:
- changed-files:
  - any-glob-to-any-file:
    - 'core/gc/**'

C-Intl:
- changed-files:
  - any-glob-to-any-file:
    - 'core/engine/src/builtins/intl/**'

C-Javascript:
- changed-files:
  - any-glob-to-any-file:
    - '**/*.js'

C-Parser:
- changed-files:
  - any-glob-to-any-file:
    - 'core/parser/**'

C-Runtime:
- changed-files:
  - any-glob-to-any-file:
    - 'core/runtime/**'

C-Tests:
- changed-files:
  - any-glob-to-any-file:
    - '**/tests/**'
    - '**/test*'

C-VM:
- changed-files:
  - any-glob-to-any-file:
    - 'core/engine/src/bytecompiler/**'
    - 'core/engine/src/vm/**'

C-WebAssembly:
- changed-files:
  - any-glob-to-any-file:
    - 'ffi/wasm/**'


================================================
FILE: .github/release.yml
================================================
# .github/release.yml

changelog:
  exclude:
    authors:
      - dependabot
  categories:
    - title: Feature Enhancements
      labels:
        - A-Enhancement
    - title: Bug Fixes
      labels:
        - A-Bug
    - title: Performance Improvements
      labels:
        - A-Performance
        - A-Memory
    - title: Internal Improvements
      labels:
        - A-Internal
        - A-Technical Debt
    - title: Other Changes
      labels:
        - "*"


================================================
FILE: .github/workflows/codeql.yml
================================================
name: "CodeQL SAST Scanning"

on:
  workflow_dispatch:
  schedule:
    - cron: '0 0 * * 0' # Run weekly on Sundays

permissions:
  contents: read

jobs:
  analyze:
    name: Analyze
    runs-on: ubuntu-latest
    timeout-minutes: 60
    permissions:
      actions: read
      contents: read
      security-events: write

    strategy:
      fail-fast: false
      matrix:
        language: [ 'rust' ]

    steps:
    - name: Checkout repository
      uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
      with:
        persist-credentials: false

    - name: Initialize CodeQL
      uses: github/codeql-action/init@38697555549f1db7851b81482ff19f1fa5c4fedc # v4.34.1
      with:
        languages: ${{ matrix.language }}
        build-mode: none

    - name: Perform CodeQL Analysis
      uses: github/codeql-action/analyze@38697555549f1db7851b81482ff19f1fa5c4fedc # v4.34.1
      with:
        category: "/language:${{matrix.language}}"


================================================
FILE: .github/workflows/labeler.yml
================================================
name: "Pull Request Labeler"
on:
- pull_request_target

permissions:
  contents: read

jobs:
  labeler:
    permissions:
      contents: read
      pull-requests: write
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
    - uses: actions/labeler@634933edcd8ababfe52f92936142cc22ac488b1b # v6


================================================
FILE: .github/workflows/nightly_build.yml
================================================
name: Nightly Build
permissions:
  contents: read

# Schedule this workflow to run at midnight every day
on:
  schedule:
    - cron: "0 0 * * *"
  workflow_dispatch:

jobs:
  build:
    permissions:
      contents: write
    strategy:
      matrix:
        include:
          - target: x86_64-unknown-linux-gnu
            os: ubuntu-latest
            binary_extension: ""
          - target: aarch64-apple-darwin
            os: macos-14
          - target: aarch64-unknown-linux-gnu
            os: ubuntu-24.04-arm
            binary_extension: ""
          - target: x86_64-pc-windows-msvc
            os: windows-latest
            binary_extension: ".exe"
    runs-on: ${{ matrix.os }}
    timeout-minutes: 60
    steps:
      - name: Checkout repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
        with:
          persist-credentials: false

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable
        with:
          toolchain: stable
          targets: ${{ matrix.target }}

      - name: Cache Cargo
        uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1

      - name: Build
        run: cargo build --target ${{ matrix.target }} --release --locked --bin boa

      - name: Upload binaries to release
        uses: svenstaro/upload-release-action@29e53e917877a24fad85510ded594ab3c9ca12de # v2
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          file: target/${{ matrix.target }}/release/boa${{ matrix.binary_extension }}
          asset_name: boa-${{ matrix.target }}${{ matrix.binary_extension }}
          tag: refs/tags/nightly
          overwrite: true
          prerelease: true


================================================
FILE: .github/workflows/pr_management.yml
================================================
name: PR Management

on:
  pull_request_target:
    types: [opened, reopened, synchronize, closed]

permissions:
  contents: read

jobs:
  manage_pr:
    runs-on: ubuntu-latest
    timeout-minutes: 10
    permissions:
      pull-requests: write
      issues: write
    steps:
      - name: Auto Add Label
        if: github.event.action == 'opened' || github.event.action == 'reopened' || github.event.action == 'synchronize'
        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
        with:
          script: |
            const labels = await github.rest.issues.listLabelsOnIssue({
              owner: context.repo.owner,
              repo: context.repo.repo,
              issue_number: context.issue.number
            });

            if (labels.data.every(label => label.name != "Waiting On Author")) {
              github.rest.issues.addLabels({
                issue_number: context.issue.number,
                owner: context.repo.owner,
                repo: context.repo.repo,
                labels: ['Waiting On Review']
              })
            }


      - name: Auto Remove Label
        if: github.event.action == 'closed'
        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
        continue-on-error: true
        with:
          script: |
            try {
              await github.rest.issues.removeLabel({
                issue_number: context.issue.number,
                owner: context.repo.owner,
                repo: context.repo.repo,
                name: 'Waiting On Review'
              });
            } catch (error) {
              console.log('Label "Waiting On Review" not found or could not be removed.');
            }

      - name: Auto Assign Milestone
        if: github.event.action == 'opened'
        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
        with:
          script: |
            // Fetch open milestones and assign the closest one
            const { data: milestones } = await github.rest.issues.listMilestones({
              owner: context.repo.owner,
              repo: context.repo.repo,
              state: 'open',
              sort: 'due_on',
              direction: 'asc'
            });

            if (milestones.length > 0) {
              const latestMilestone = milestones[0];
              await github.rest.issues.update({
                issue_number: context.issue.number,
                owner: context.repo.owner,
                repo: context.repo.repo,
                milestone: latestMilestone.number
              });
            }


================================================
FILE: .github/workflows/pull_request.yml
================================================
name: Benchmarks

on:
  pull_request:
    branches:
      - main
      - releases/**

permissions:
  contents: read

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

jobs:
  runBenchmark:
    if: contains(github.event.pull_request.labels.*.name, 'run-benchmark')
    name: run benchmark
    runs-on: ubuntu-latest
    timeout-minutes: 120
    steps:
      - name: Checkout repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
        with:
          fetch-depth: 0
          persist-credentials: false

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable
        with:
          toolchain: stable

      - name: Cache Cargo
        uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1

      - uses: boa-dev/criterion-compare-action@adfd3a94634fe2041ce5613eb7df09d247555b87 # v3.2.4
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          branchName: ${{ github.base_ref }}
          cwd: ./core/engine


================================================
FILE: .github/workflows/release.yml
================================================
name: Publish Release
on:
  release:
    types: [published]

permissions:
  contents: read

jobs:
  publish:
    name: Publish crates
    runs-on: ubuntu-latest
    timeout-minutes: 60
    steps:
      - name: Set environment
        env:
          W_FLAGS: ${{ (github.ref == 'refs/heads/main' || github.base_ref == 'main') && '-Dwarnings' || '' }}
        # Setting `RUSTFLAGS` overrides any flags set on .cargo/config.toml, so we need to
        # set the target flags instead which are cumulative.
        # Track https://github.com/rust-lang/cargo/issues/5376
        run: |
          target=$(rustc -vV | awk '/^host/ { print $2 }' | tr [:lower:] [:upper:] | tr '-' '_')
          echo "CARGO_TARGET_${target}_RUSTFLAGS=$W_FLAGS" >> $GITHUB_ENV
      - name: Checkout repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable
        with:
          toolchain: stable

      - name: Install cargo-workspaces
        uses: baptiste0928/cargo-install@f204293d9709061b7bc1756fec3ec4e2cd57dec0 # v3.4.0
        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 \
            --no-git-commit \
            skip

  npm_publish:
    name: Publish NPM package (wasm)
    runs-on: ubuntu-latest
    timeout-minutes: 60
    steps:
      - name: Checkout repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable
        with:
          toolchain: stable
          targets: wasm32-unknown-unknown

      - name: Install wasm-pack
        uses: baptiste0928/cargo-install@f204293d9709061b7bc1756fec3ec4e2cd57dec0 # v3.4.0
        with:
          crate: wasm-pack

      - name: Build boa_wasm
        run: wasm-pack build --scope boa-dev ./ffi/wasm

      - name: Set-up Node.js
        uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
        with:
          node-version: "20"

      - name: Set-up npm config for publishing
        run: npm config set -- '//registry.npmjs.org/:_authToken' "${{ secrets.NPM_TOKEN }}"

      - name: Check if the npm version already exists
        run: |
          VERSION=$(jq -r '.version' ./ffi/wasm/pkg/package.json)

          if npm view @boa-dev/boa_wasm@$VERSION version > dev/null 2>&1; then
            echo "Version $VERSION already published. Skipping"
            echo "SKIP_PUBLISH=true" >> $GITHUB_ENV
          fi

      - name: Publish to npm
        if: env.SKIP_PUBLISH != 'true'
        run: npm publish ./ffi/wasm/pkg --access=public

  release-binaries:
    name: Publish binaries
    permissions:
      contents: write
    needs: publish
    strategy:
      fail-fast: false
      matrix:
        build: [linux, macos-arm64, win-msvc]
        include:
        - build: linux
          os: ubuntu-latest
          target: x86_64-unknown-linux-gnu
          binary_extension: ""
        - build: macos-arm64
          os: macos-14
          target: aarch64-apple-darwin
          binary_extension: ""
        - build: win-msvc
          os: windows-latest
          target: x86_64-pc-windows-msvc
          binary_extension: ".exe"
    runs-on: ${{ matrix.os }}
    timeout-minutes: 60
    steps:
      - name: Checkout repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable
        with:
          toolchain: stable
          targets: ${{ matrix.target }}

      - name: Cache Cargo
        uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1

      - name: Build
        run: cargo build --target ${{ matrix.target }} --verbose --release --locked --bin boa

      - name: Upload binaries to release
        uses: svenstaro/upload-release-action@29e53e917877a24fad85510ded594ab3c9ca12de # v2
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          file: target/${{ matrix.target }}/release/boa${{ matrix.binary_extension }}
          asset_name: boa-${{ matrix.target }}${{ matrix.binary_extension }}
          tag: ${{ github.ref }}


================================================
FILE: .github/workflows/rust.yml
================================================
name: Continuous integration

on:
  pull_request:
    branches:
      - main
      - releases/**
  push:
    branches:
      - main
      - releases/**
  merge_group:
    types: [checks_requested]
  workflow_dispatch:

permissions:
  contents: read

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

env:
  W_FLAGS: ${{ (github.ref == 'refs/heads/main' || github.base_ref == 'main') && '-D warnings' || '' }}

jobs:
  fmt:
    name: Formatting
    runs-on: ubuntu-latest
    timeout-minutes: 60
    steps:
      - name: Set environment
        run: |
          target=$(rustc -vV | awk '/^host/ { print $2 }' | tr [:lower:] [:upper:] | tr '-' '_')
          echo "CARGO_TARGET_${target}_RUSTFLAGS=$W_FLAGS" >> $GITHUB_ENV
      - name: Checkout repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
        with:
          persist-credentials: false

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable
        with:
          toolchain: stable
          components: rustfmt

      - name: Format (rustfmt)
        run: cargo fmt --all --check

  typos:
    name: Typos
    runs-on: ubuntu-latest
    timeout-minutes: 60
    steps:
      - name: Checkout repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
        with:
          persist-credentials: false

      - name: Check for typos
        uses: crate-ci/typos@631208b7aac2daa8b707f55e7331f9112b0e062d # v1.44.0

  clippy:
    name: Lint
    runs-on: ubuntu-latest
    timeout-minutes: 60
    steps:
      - name: Set environment
        run: |
          target=$(rustc -vV | awk '/^host/ { print $2 }' | tr [:lower:] [:upper:] | tr '-' '_')
          echo "CARGO_TARGET_${target}_RUSTFLAGS=$W_FLAGS" >> $GITHUB_ENV
      - name: Checkout repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
        with:
          persist-credentials: false

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable
        with:
          toolchain: stable
          components: clippy

      - name: Cache Cargo
        uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1

      - name: Install cargo-workspaces
        uses: baptiste0928/cargo-install@f204293d9709061b7bc1756fec3ec4e2cd57dec0 # v3.4.0
        with:
          crate: cargo-workspaces

      - name: Clippy (All features)
        run: cargo workspaces exec cargo clippy --all-features --all-targets
      - name: Clippy (No features)
        run: cargo workspaces exec cargo clippy --no-default-features --all-targets
      - name: Clippy (Intl)
        run: cargo clippy -p boa_engine --features intl
      - name: Clippy (Annex-B)
        run: cargo clippy -p boa_engine --features annex-b
      - name: Clippy (Experimental)
        run: cargo clippy -p boa_engine --features experimental

  docs:
    name: Documentation
    runs-on: ubuntu-latest
    timeout-minutes: 60
    env:
      RUSTDOCFLAGS: ${{ (github.ref == 'refs/heads/main' || github.base_ref == 'main') && '-D warnings' || '' }}
    steps:
      - name: Set environment
        run: |
          target=$(rustc -vV | awk '/^host/ { print $2 }' | tr [:lower:] [:upper:] | tr '-' '_')
          echo "CARGO_TARGET_${target}_RUSTFLAGS=$W_FLAGS" >> $GITHUB_ENV
      - name: Checkout repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
        with:
          persist-credentials: false

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable
        with:
          toolchain: stable

      - name: Cache Cargo
        uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1

      - name: Generate documentation
        run: cargo doc -v --document-private-items --all-features

  msrv:
    name: MSRV
    runs-on: ubuntu-latest
    timeout-minutes: 60
    steps:
      - name: Set environment
        run: |
          target=$(rustc -vV | awk '/^host/ { print $2 }' | tr [:lower:] [:upper:] | tr '-' '_')
          echo "CARGO_TARGET_${target}_RUSTFLAGS=$W_FLAGS" >> $GITHUB_ENV
      - name: Checkout repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
        with:
          persist-credentials: false

      # Get the rust_version from the Cargo.toml
      - name: Get rust_version
        id: rust_version
        run: echo "rust_version=$(grep '^rust-version' Cargo.toml | cut -d' ' -f3 | tr -d '"')" >> $GITHUB_OUTPUT

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable
        with:
          toolchain: ${{ steps.rust_version.outputs.rust_version }}

      - name: Check compilation
        run: cargo check --all-features --all-targets

  coverage:
    name: Coverage
    runs-on: ubuntu-latest
    timeout-minutes: 60
    if: ${{ github.ref == 'refs/heads/main' || github.base_ref == 'main' }}
    needs:
      - fmt
      - typos
      - clippy
      - docs
      - msrv
    steps:
      - name: Set environment
        # Setting `RUSTFLAGS` overrides any flags set on .cargo/config.toml, so we need to
        # set the target flags instead which are cumulative.
        # Track https://github.com/rust-lang/cargo/issues/5376
        run: |
          target=$(rustc -vV | awk '/^host/ { print $2 }' | tr [:lower:] [:upper:] | tr '-' '_')
          echo "CARGO_TARGET_${target}_RUSTFLAGS=$W_FLAGS" >> $GITHUB_ENV
      - name: Checkout repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
        with:
          persist-credentials: false

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable

      - name: Cache Cargo
        uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1

      - name: Install cargo-tarpaulin
        uses: baptiste0928/cargo-install@f204293d9709061b7bc1756fec3ec4e2cd57dec0 # v3.4.0
        with:
          crate: cargo-tarpaulin

      - name: Run tarpaulin
        run: cargo tarpaulin --workspace --features annex-b,intl_bundled,experimental --ignore-tests --engine llvm --out xml

      - name: Upload to codecov.io
        uses: codecov/codecov-action@1af58845a975a7985b0beb0cbe6fbbb71a41dbad # v5

  tests:
    name: Test
    runs-on: ${{ matrix.os }}
    timeout-minutes: 60
    needs:
      - fmt
      - typos
      - clippy
      - docs
      - msrv
    env:
      RUSTUP_WINDOWS_PATH_ADD_BIN: 1
    strategy:
      fail-fast: false
      matrix:
        include:
          - os: macos-14
          - os: windows-latest
          - os: ubuntu-24.04-arm
          - os: ubuntu-latest
    steps:
      - name: Set environment
        if: ${{ matrix.os != 'windows-latest' }}
        # Setting `RUSTFLAGS` overrides any flags set on .cargo/config.toml, so we need to
        # set the target flags instead which are cumulative.
        # Track https://github.com/rust-lang/cargo/issues/5376
        run: |
          target=$(rustc -vV | awk '/^host/ { print $2 }' | tr '[:lower:]' '[:upper:]' | tr '-' '_')
          echo "CARGO_TARGET_${target}_RUSTFLAGS=$W_FLAGS" >> $GITHUB_ENV
      - name: Set environment
        if: ${{ matrix.os == 'windows-latest' }}
        run: |
          $target = (rustc -vV | Select-String '^host') -replace '^host:\s+', '' | ForEach-Object { $_.ToUpper().Replace('-', '_') }
          "CARGO_TARGET_${target}_RUSTFLAGS=$env:W_FLAGS" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8

      - name: Checkout repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
        with:
          persist-credentials: false

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable
        with:
          toolchain: stable

      - name: Install Cargo insta
        uses: baptiste0928/cargo-install@f204293d9709061b7bc1756fec3ec4e2cd57dec0 # v3.4.0
        with:
          crate: cargo-insta
          locked: true

      - name: Cache Cargo
        uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1

      - name: Build tests
        run: cargo test --no-run --profile ci
      # this order is faster according to rust-analyzer
      - name: Build
        run: cargo build --all-targets --quiet --profile ci --features annex-b,intl_bundled,experimental,embedded_lz4
      - name: Install latest nextest
        uses: taiki-e/install-action@7cb3ba7bc31801346db00d4a6d7008aabab5e986 # nextest
      - name: Test with nextest
        run: cargo nextest run --profile ci --cargo-profile ci --features annex-b,intl_bundled,experimental,embedded_lz4
      - name: Test docs
        run: cargo test --doc --profile ci --features annex-b,intl_bundled,experimental
      - name: Test bytecode output
        run: cargo insta test -p insta-bytecode

  cross-tests:
    name: Test
    runs-on: ubuntu-latest
    timeout-minutes: 60
    needs:
      - fmt
      - typos
      - clippy
      - docs
      - msrv
    strategy:
      matrix:
        include:
          - target: i686-unknown-linux-gnu
    steps:
      - name: Set environment
        # Setting `RUSTFLAGS` overrides any flags set on .cargo/config.toml, so we need to
        # set the target flags instead which are cumulative.
        # Track https://github.com/rust-lang/cargo/issues/5376
        run: |
          target=$(echo ${{ matrix.target }} | tr [:lower:] [:upper:] | tr '-' '_')
          echo "CARGO_TARGET_${target}_RUSTFLAGS=$W_FLAGS" >> $GITHUB_ENV

      - name: Checkout repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
        with:
          persist-credentials: false

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable
        with:
          toolchain: stable
          target: ${{ matrix.target }}

      - name: Install Cross
        uses: baptiste0928/cargo-install@f204293d9709061b7bc1756fec3ec4e2cd57dec0 # v3.4.0
        with:
          crate: cross
          git: https://github.com/cross-rs/cross

      - name: Cache Cargo
        uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1

      - name: Run tests
        run: |
          cross test --workspace --target ${{ matrix.target }} \
            --profile ci \
            --features annex-b,intl_bundled,experimental \
            --exclude boa_macros \
            --exclude boa_macros_tests

  miri:
    name: Miri
    runs-on: ubuntu-latest
    timeout-minutes: 120
    needs:
      - fmt
      - typos
      - clippy
      - docs
      - msrv
    steps:
      - name: Set environment
        # Setting `RUSTFLAGS` overrides any flags set on .cargo/config.toml, so we need to
        # set the target flags instead which are cumulative.
        # Track https://github.com/rust-lang/cargo/issues/5376
        run: |
          target=$(rustc -vV | awk '/^host/ { print $2 }' | tr [:lower:] [:upper:] | tr '-' '_')
          echo "CARGO_TARGET_${target}_RUSTFLAGS=$W_FLAGS" >> $GITHUB_ENV
      - name: Checkout repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
        with:
          persist-credentials: false

      - name: Install Rust nightly with miri
        uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # nightly
        with:
          toolchain: nightly
          components: miri

      - name: Setup miri
        run: cargo miri setup

      - name: Run miri tests
        run: cargo miri test --workspace --exclude boa_cli --exclude boa_examples miri

  build-fuzz:
    name: Fuzzing
    runs-on: ubuntu-latest
    timeout-minutes: 60
    needs:
      - fmt
      - typos
      - clippy
      - docs
      - msrv
    steps:
      - name: Set environment
        run: |
          target=$(rustc -vV | awk '/^host/ { print $2 }' | tr [:lower:] [:upper:] | tr '-' '_')
          echo "CARGO_TARGET_${target}_RUSTFLAGS=$W_FLAGS" >> $GITHUB_ENV
      - name: Checkout repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
        with:
          persist-credentials: false

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable
        with:
          toolchain: stable

      - name: Cache Cargo
        uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1

      - name: Install cargo-fuzz
        uses: baptiste0928/cargo-install@f204293d9709061b7bc1756fec3ec4e2cd57dec0 # v3.4.0
        with:
          crate: cargo-fuzz

      - name: Build fuzz
        run: cd tests/fuzz && cargo fuzz build -s none --dev

  build-run-examples:
    name: Build & run examples
    runs-on: ubuntu-latest
    timeout-minutes: 60
    needs:
      - fmt
      - typos
      - clippy
      - docs
      - msrv
    steps:
      - name: Set environment
        run: |
          target=$(rustc -vV | awk '/^host/ { print $2 }' | tr [:lower:] [:upper:] | tr '-' '_')
          echo "CARGO_TARGET_${target}_RUSTFLAGS=$W_FLAGS" >> $GITHUB_ENV
      - name: Checkout repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
        with:
          persist-credentials: false

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable
        with:
          toolchain: stable

      - name: Cache Cargo
        uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1

      - name: Install cargo-workspaces
        uses: baptiste0928/cargo-install@f204293d9709061b7bc1756fec3ec4e2cd57dec0 # v3.4.0
        with:
          crate: cargo-workspaces

      - name: Build (All features)
        run: cargo workspaces exec cargo build --all-features --all-targets --profile ci
      - name: Build (No features)
        run: cargo workspaces exec cargo build --no-default-features --all-targets --profile ci

      - name: Run examples
        run: |
          cd examples
          cargo run -p boa_examples --bin 2>&1 \
            | grep -E '^ ' \
            | xargs -n1 sh -c 'cargo run -p boa_examples --profile ci --bin $0 || exit 255'

  run-semver-check:
    name: Check SemVer compatibility
    runs-on: ubuntu-latest
    timeout-minutes: 60
    needs:
      - fmt
      - typos
      - clippy
      - docs
      - msrv
    steps:
      - name: Set environment
        run: |
          target=$(rustc -vV | awk '/^host/ { print $2 }' | tr [:lower:] [:upper:] | tr '-' '_')
          echo "CARGO_TARGET_${target}_RUSTFLAGS=$W_FLAGS" >> $GITHUB_ENV
      - name: Checkout repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
        with:
          persist-credentials: false

      - name: Cache Cargo
        uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1

      - name: Check Semver
        uses: obi1kenobi/cargo-semver-checks-action@5b298c9520f7096a4683c0bd981a7ac5a7e249ae # v2
        with:
          exclude: boa_wintertc


================================================
FILE: .github/workflows/security_audit.yml
================================================
name: Security audit
on:
  schedule:
    - cron: "0 0 * * *"

permissions:
  contents: read
jobs:
  audit:
    runs-on: ubuntu-latest
    timeout-minutes: 60
    steps:
      - name: Checkout repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
        with:
          persist-credentials: false
      - uses: rustsec/audit-check@69366f33c96575abad1ee0dba8212993eecbe998 # v2.0.0
        with:
          token: ${{ secrets.GITHUB_TOKEN }}


================================================
FILE: .github/workflows/test262.yml
================================================
name: test262

on:
  pull_request:
    branches:
      - main
      - releases/**

permissions:
  contents: read

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
  cancel-in-progress: true

jobs:
  run_test262:
    name: Run the test262 test suite
    runs-on: ubuntu-latest
    timeout-minutes: 60
    steps:
      - name: Checkout repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
        with:
          path: boa
          persist-credentials: false

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable
        with:
          toolchain: stable

      - name: Cache Cargo
        uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1

      - name: Checkout the data repo
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
        with:
          repository: boa-dev/data
          path: data
          persist-credentials: false

      - name: Run the test262 test suite
        run: |
          cd boa
          mkdir -p ../results/test262
          cargo run --release --bin boa_tester -- run -v -o ../results/test262
          cd ..

      - name: Compare results
        shell: bash
        run: |
          cd boa

          base_results="../data/test262/refs/heads/main/latest.json"
          pr_results="../results/test262/pull/latest.json"
          output_dir="../results/outputs"

          test -f "$base_results"
          test -f "$pr_results"

          comment="$(./target/release/boa_tester compare "$base_results" "$pr_results" -m)"
          maincommit="$(jq -r '.c' "$base_results")"

          mkdir -p "$output_dir"
          {
            echo "<!-- test262-compliance-report -->"
            echo "### Test262 conformance changes"
            echo
            echo "$comment"
            echo
            echo "Tested main commit: [\`${maincommit}\`](${{ github.event.pull_request.base.repo.html_url }}/commit/${maincommit})"
            echo "Tested PR commit: [\`${{ github.event.pull_request.head.sha }}\`](${{ github.event.pull_request.head.repo.html_url }}/commit/${{ github.event.pull_request.head.sha }})"
            echo "Compare commits: ${{ github.event.pull_request.base.repo.html_url }}/compare/${maincommit}...${{ github.event.pull_request.head.sha }}"
          } > "$output_dir/comment.md"

          echo "${{ github.event.pull_request.number }}" > "$output_dir/pr_number.txt"

      - name: Upload results
        uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
        with:
          name: test262-results
          path: results/outputs
          retention-days: 1


================================================
FILE: .github/workflows/test262_comment.yml
================================================
name: test262_comment

on:
  workflow_run:
    workflows: ["test262"]
    types:
      - completed

permissions:
  contents: read
  pull-requests: write

jobs:
  comment:
    name: Post results to PR
    runs-on: ubuntu-latest
    if: ${{ github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success' }}
    steps:
      - name: Download results
        uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
        with:
          name: test262-results
          github-token: ${{ secrets.GITHUB_TOKEN }}
          run-id: ${{ github.event.workflow_run.id }}
          path: downloaded-results

      - name: Read results
        id: results
        shell: bash
        run: |
          echo "pr_number=$(cat downloaded-results/pr_number.txt)" >> $GITHUB_OUTPUT

      - name: Find Previous Comment
        uses: peter-evans/find-comment@b30e6a3c0ed37e7c023ccd3f1db5c6c0b0c23aad # v4
        id: previous-comment
        with:
          issue-number: ${{ steps.results.outputs.pr_number }}
          body-includes: "<!-- test262-compliance-report -->"

      - name: Update or create comment
        uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v5
        with:
          comment-id: ${{ steps.previous-comment.outputs.comment-id }}
          issue-number: ${{ steps.results.outputs.pr_number }}
          body-path: downloaded-results/comment.md
          edit-mode: replace


================================================
FILE: .github/workflows/test262_release.yml
================================================
name: Update Test262 Results

on:
  release:
    types:
      - published
  push:
    branches:
      - main

permissions:
  contents: read

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  update_test262_results:
    name: Update Test262 Results
    runs-on: ubuntu-latest
    timeout-minutes: 60
    steps:
      # Checkout the main repository
      - name: Checkout repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
        with:
          path: boa

      # Install Rust toolchain
      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable
        with:
          toolchain: stable

      # Cache cargo dependencies
      - name: Cache Cargo
        uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1

      # Checkout the `data` repository
      - name: Checkout the data repo
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
        with:
          repository: boa-dev/data
          token: ${{ secrets.DATA_PAT }}
          path: data

      # Run the Test262 test suite
      - name: Run the test262 test suite
        run: |
          cd boa
          cargo run --release --bin boa_tester -- run -v -o ../data/test262

      # Commit and push results back to the `data` repo
      - name: Commit results
        run: |
          cd data
          git config user.name "GitHub Actions"
          git config user.email "actions@github.com"
          git add test262
          git commit -m "Update Test262 results ( ${{ github.ref_name }} )"
      - name: Push changes
        uses: ad-m/github-push-action@4cc74773234f74829a8c21bc4d69dd4be9cfa599 # master
        with:
            # cannot use secrets.GITHUB_TOKEN since it only gives you
            # write permissions to the current repository.
            github_token: ${{ secrets.DATA_PAT }}
            repository: boa-dev/data
            directory: data


================================================
FILE: .github/workflows/webassembly.yml
================================================
name: Webassembly demo

on:
  pull_request:
    branches:
      - main
      - releases/**
  push:
    branches:
      - main
      - releases/**
  merge_group:
    types: [checks_requested]

permissions:
  contents: read

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

jobs:
  check_style:
    name: Check webassembly demo style
    runs-on: ubuntu-latest
    timeout-minutes: 60
    steps:
      - name: Checkout
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
        with:
          persist-credentials: false
      - name: Check code formatting
        run: npx prettier --check .

  build:
    name: Build webassembly demo
    runs-on: ubuntu-latest
    timeout-minutes: 60
    env:
      WASM_PACK_PATH: ~/.cargo/bin/wasm-pack
    steps:
      - name: Set environment
        env:
          W_FLAGS: ${{ (github.ref == 'refs/heads/main' || github.base_ref == 'main') && '-Dwarnings' || '' }}
        # Setting `RUSTFLAGS` overrides any flags set on .cargo/config.toml, so we need to
        # set the target flags instead which are cumulative.
        # Track https://github.com/rust-lang/cargo/issues/5376
        run: echo "CARGO_TARGET_WASM32_UNKNOWN_UNKNOWN_RUSTFLAGS=$W_FLAGS" >> $GITHUB_ENV
      - name: Checkout repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
        with:
          persist-credentials: false

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable
        with:
          toolchain: stable


      - name: Cache Cargo
        uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1

      - name: Install wasm-pack
        uses: baptiste0928/cargo-install@f204293d9709061b7bc1756fec3ec4e2cd57dec0 # v3.4.0
        with:
          crate: wasm-pack

      - name: Build Playground
        run: wasm-pack build ./ffi/wasm --verbose
      - name: Test (Chrome)
        run: wasm-pack test --headless --chrome ./ffi/wasm --verbose
      - name: Test (Firefox)
        run: wasm-pack test --headless --firefox ./ffi/wasm --verbose


================================================
FILE: .gitignore
================================================
# IDE
.idea/
*.iml

# Vim
*.*.swp
*.*.swo

# Build
target
dist
**/*.rs.bk
node_modules
.DS_Store
yarn-error.log
.vscode/settings.json
.zed/settings.json

# debug is used for testing changes locally
/debug
.boa_history

# test262 testing suite
test262

# wpt testing suite
tests_wpt

# Profiling
*.string_data
*.string_index
*.events
chrome_profiler.json
*.mm_profdata
profile.json.gz

# Logs
*.log

# Yarn
.yarn
.yarnrc.yml

# e2e test
playwright-report
test-results

# dhat
dhat-*.json
perf.data*

# Nix
/.envrc
/.direnv


================================================
FILE: .husky/pre-push
================================================
#!/bin/sh

target=$(rustc -vV | awk '/^host/ { print $2 }' | tr '[:lower:]' '[:upper:]' | tr '-' '_')
export CARGO_TARGET_${target}_RUSTFLAGS='-D warnings'

if ! command -v cargo-make >/dev/null 2>&1; then
    echo "cargo-make is not installed. Install it with:"
    echo "  cargo install cargo-make"
    exit 1
fi

cargo make run-ci


================================================
FILE: .prettierignore
================================================
# Ignore artifacts:
*.rs
*.yml
target
node_modules
core/engine/benches/bench_scripts/mini_js.js
core/engine/benches/bench_scripts/clean_js.js
ffi/wasm/pkg
dist
test262
playwright-report
test-results

# For some reason Prettier likes to reformat JSON lock files.
flake.lock

# Assets that should not be checked.
benches/scripts/v8-benches


================================================
FILE: .vscode/launch.json
================================================
{
  // 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": "Debug Boa (Script mode)",
      "windows": {
        "program": "${workspaceFolder}/target/debug/boa.exe"
      },
      "program": "${workspaceFolder}/target/debug/boa",
      "args": ["${workspaceFolder}/${input:filePath}", "--debug-object"],
      "sourceLanguages": ["rust"],
      "preLaunchTask": "Cargo Build boa_cli"
    },
    {
      "type": "lldb",
      "request": "launch",
      "name": "Debug Boa (Module mode)",
      "windows": {
        "program": "${workspaceFolder}/target/debug/boa.exe"
      },
      "program": "${workspaceFolder}/target/debug/boa",
      "args": [
        "${workspaceFolder}/${input:filePath}",
        "--debug-object",
        "-m",
        "-r",
        "${workspaceFolder}/${input:modulePath}"
      ],
      "sourceLanguages": ["rust"],
      "preLaunchTask": "Cargo Build boa_cli"
    },
    {
      "type": "lldb",
      "request": "launch",
      "name": "Debug Boa (Tester)",
      "windows": {
        "program": "${workspaceFolder}/target/debug/boa_tester.exe"
      },
      "program": "${workspaceFolder}/target/debug/boa_tester",
      "args": ["run", "-s", "${input:testPath}", "-vvv", "-d"],
      "sourceLanguages": ["rust"],
      "preLaunchTask": "Cargo Build boa_tester"
    }
  ],
  "inputs": [
    {
      "id": "filePath",
      "description": "Relative path to the file to run",
      "type": "promptString"
    },
    {
      "id": "modulePath",
      "description": "Relative path to the module root directory",
      "type": "promptString"
    },
    {
      "id": "testPath",
      "description": "Relative path to the test from the test262 directory",
      "type": "promptString"
    }
  ]
}


================================================
FILE: .vscode/tasks.json
================================================
{
  // 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 Build",
      "command": "cargo",
      "args": ["build"],
      "group": "build",
      "presentation": {
        "clear": true
      }
    },
    {
      "type": "process",
      "label": "Cargo Build boa_cli",
      "command": "cargo",
      "args": ["build", "-p", "boa_cli"],
      "group": "build",
      "presentation": {
        "clear": true
      }
    },
    {
      "type": "process",
      "label": "Cargo Build boa_tester",
      "command": "cargo",
      "args": ["build", "-p", "boa_tester"],
      "group": "build",
      "presentation": {
        "clear": true
      }
    },
    {
      "type": "process",
      "label": "Run JS file",
      "command": "cargo",
      "args": ["run", "--bin", "boa", "${file}"],
      "group": {
        "kind": "build",
        "isDefault": true
      },
      "presentation": {
        "clear": true
      },
      "options": {
        "env": {
          "RUST_BACKTRACE": "1"
        }
      },
      "problemMatcher": []
    },
    {
      "type": "process",
      "label": "Run JS file (Profiler)",
      "command": "cargo",
      "args": ["run", "--features", "profiler", "${file}"],
      "group": "build",
      "options": {
        "env": {
          "RUST_BACKTRACE": "full"
        },
        "cwd": "${workspaceFolder}/cli"
      },
      "presentation": {
        "clear": true
      },
      "problemMatcher": []
    },
    {
      "type": "process",
      "label": "Run JS file with VM trace",
      "command": "cargo",
      "args": ["run", "--bin", "boa", "--", "-t", "${file}"],
      "group": "build",
      "presentation": {
        "clear": true
      },
      "problemMatcher": []
    },
    {
      "type": "process",
      "label": "Get AST for JS file",
      "command": "cargo",
      "args": ["run", "--bin", "boa", "--", "-a=Debug", "${file}"],
      "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"
    }
  ]
}


================================================
FILE: ABOUT.md
================================================
# About Boa

Boa is an open-source, experimental ECMAScript Engine written in Rust for
lexing, parsing and executing ECMAScript/JavaScript. Currently, Boa supports some
of the [language][boa-conformance]. More information can be viewed at [Boa's
website][boa-web].

Try out the most recent release with Boa's live demo
[playground][boa-playground].

## Boa Crates

- [**`boa_cli`**][cli] - Boa's CLI && REPL implementation
- [**`boa_ast`**][ast] - Boa's ECMAScript Abstract Syntax Tree.
- [**`boa_engine`**][engine] - Boa's implementation of ECMAScript builtin objects and execution.
- [**`boa_gc`**][gc] - Boa's garbage collector.
- [**`boa_icu_provider`**][icu] - Boa's ICU4X data provider.
- [**`boa_interner`**][interner] - Boa's string interner.
- [**`boa_macros`**][macros] - Boa's macros.
- [**`boa_parser`**][parser] - Boa's lexer and parser.
- [**`boa_runtime`**][runtime] - Boa's `WebAPI` features.
- [**`boa_string`**][string] - Boa's ECMAScript string implementation.
- [**`boa_wintertc`**][wintertc] - Boa's `WinterTC` (TC55) Minimum Common Web API implementation.
- [**`tag_ptr`**][tag_ptr] - Utility library that enables a pointer to be associated with a tag of type `usize`.
- [**`small_btree`**][small_btree] - Utility library that adds the `SmallBTreeMap` data structure.

[boa-conformance]: https://boajs.dev/conformance
[boa-web]: https://boajs.dev/
[boa-playground]: https://boajs.dev/playground
[ast]: https://docs.rs/boa_ast/latest/boa_ast/index.html
[engine]: https://docs.rs/boa_engine/latest/boa_engine/index.html
[gc]: https://docs.rs/boa_gc/latest/boa_gc/index.html
[interner]: https://docs.rs/boa_interner/latest/boa_interner/index.html
[parser]: https://docs.rs/boa_parser/latest/boa_parser/index.html
[icu]: https://docs.rs/boa_icu_provider/latest/boa_icu_provider/index.html
[runtime]: https://docs.rs/boa_runtime/latest/boa_runtime/index.html
[string]: https://docs.rs/boa_string/latest/boa_string/index.html
[wintertc]: https://docs.rs/boa_wintertc/latest/boa_wintertc/index.html
[tag_ptr]: https://docs.rs/tag_ptr/latest/tag_ptr/index.html
[small_btree]: https://docs.rs/small_btree/latest/small_btree/index.html
[macros]: https://docs.rs/boa_macros/latest/boa_macros/index.html
[cli]: https://crates.io/crates/boa_cli


================================================
FILE: CHANGELOG.md
================================================
# CHANGELOG

## [v0.21.0 (2025-10-21)](https://github.com/boa-dev/boa/compare/v0.20...v0.21)

### Feature Enhancements

- Build out Temporal's `ZonedDateTime` and `Now` by @nekevss in https://github.com/boa-dev/boa/pull/4068
- Add valueOf methods to the Temporal builtins by @nekevss in https://github.com/boa-dev/boa/pull/4079
- Add more `ZonedDateTime` method implementations by @nekevss in https://github.com/boa-dev/boa/pull/4095
- Cleanup CLI to use eyre + refactor patterns by @jedel1043 in https://github.com/boa-dev/boa/pull/4108
- Move methods of `JsString` to `JsStr` by @jedel1043 in https://github.com/boa-dev/boa/pull/4106
- Implement `Error.isError` by @jedel1043 in https://github.com/boa-dev/boa/pull/4114
- Improve implementation of example `JobQueue`s by @jedel1043 in https://github.com/boa-dev/boa/pull/4111
- Implement `PlainDate` string methods by @nekevss in https://github.com/boa-dev/boa/pull/4119
- Revamp `JobQueue` into `JobExecutor` and introduce `NativeAsyncJob` by @jedel1043 in https://github.com/boa-dev/boa/pull/4118
- Add `From<Cow<'a, str>>` for `JsString` by @CrazyboyQCD in https://github.com/boa-dev/boa/pull/4134
- Implement more `toString` and `toJSON` methods on Temporal builtins by @nekevss in https://github.com/boa-dev/boa/pull/4126
- Implement `Array.fromAsync` by @jedel1043 in https://github.com/boa-dev/boa/pull/4115
- Implement `toString` and `toJSON` methods for the remaining builtins `Duration`, `PlainMonthDay`, and `PlainYearMonth` by @nekevss in https://github.com/boa-dev/boa/pull/4135
- Bump temporal_rs and fix instant return by @nekevss in https://github.com/boa-dev/boa/pull/4142
- Implement toLocaleString and some general cleanup by @nekevss in https://github.com/boa-dev/boa/pull/4156
- add macos arm64 by @ahaoboy in https://github.com/boa-dev/boa/pull/4160
- Use NaN-boxing on value::InnerValue by @hansl in https://github.com/boa-dev/boa/pull/4091
- Split `Tagged<T>` into a utility crate by @HalidOdat in https://github.com/boa-dev/boa/pull/3849
- Update JsValue::to_json to support undefined by @jamesthurley in https://github.com/boa-dev/boa/pull/4212
- Change signature of `from_async_fn` to allow capturing the context by @jedel1043 in https://github.com/boa-dev/boa/pull/4215
- Implement Set methods from ECMAScript Specification Features/#4128 by @Hemenguelbindi in https://github.com/boa-dev/boa/pull/4145
- Add a `#[boa_module]` macro to automatically implement a Module by @hansl in https://github.com/boa-dev/boa/pull/4277
- Implement small changes from Intl's 2026 spec by @jedel1043 in https://github.com/boa-dev/boa/pull/4290
- Bump rustc edition to 2024 and version to 1.88 by @jedel1043 in https://github.com/boa-dev/boa/pull/4315
- Implement backtrace information for errors by @HalidOdat in https://github.com/boa-dev/boa/pull/4292
- Add WPT as optional tests for boa_runtime by @hansl in https://github.com/boa-dev/boa/pull/4008
- Simplify SourcePositionGuard creation by @hansl in https://github.com/boa-dev/boa/pull/4327
- Make `JobExecutor::run_jobs_async` a plain async method by @jedel1043 in https://github.com/boa-dev/boa/pull/4331
- Introduce async `ModuleLoader`s by @jedel1043 in https://github.com/boa-dev/boa/pull/4328
- Use `AsyncFnOnce` in constructors of `NativeAsyncJob` by @jedel1043 in https://github.com/boa-dev/boa/pull/4333
- Add (optionally) Float16Array and f16round() support and add JsUint8ClampedArray by @hansl in https://github.com/boa-dev/boa/pull/4364
- Implement `Atomics.waitAsync` by @jedel1043 in https://github.com/boa-dev/boa/pull/4339
- Implement `Math.sumPrecise` by @nekevss in https://github.com/boa-dev/boa/pull/4383
- Add `Date.prototype.toTemporalInstant` from the Temporal proposal by @nekevss in https://github.com/boa-dev/boa/pull/4382
- Implement upsert methods for Map by @jasonmilad in https://github.com/boa-dev/boa/pull/4436
- Change JsObject default method to take `Instrinsics` parameter by @mdrokz in https://github.com/boa-dev/boa/pull/4466
- Cleanup `BuiltInConstructor` constants to ensure no additional allocations by @jedel1043 in https://github.com/boa-dev/boa/pull/4464
- Implement Upsert methods for weakMap: getOrInsert and getOrInsertComputed by @rrogerc in https://github.com/boa-dev/boa/pull/4459

### Bug Fixes

- Fix #4051, parse Arguments should expect `)` not `}` by @zzzdong in https://github.com/boa-dev/boa/pull/4058
- bug fix: ops that stay strictly at the EOF after assigns ops are ignored by @Nikita-str in https://github.com/boa-dev/boa/pull/4047
- Patch Temporal.PlainTime and Temporal.Duration constructors by @nekevss in https://github.com/boa-dev/boa/pull/4078
- Fix bugs on ephemeron and TypedArray.prototype.slice by @jedel1043 in https://github.com/boa-dev/boa/pull/4107
- Allow bool and null literals in export aliases by @jedel1043 in https://github.com/boa-dev/boa/pull/4113
- Allow referencing `super` within initializer of static private property by @jedel1043 in https://github.com/boa-dev/boa/pull/4121
- Fix truncation on max microseconds and nanoseconds by @nekevss in https://github.com/boa-dev/boa/pull/4139
- Fix issues with `to_temporal_time` and `ZonedDateTime.prototype.withPlainTime` by @nekevss in https://github.com/boa-dev/boa/pull/4154
- Some cleanup + order of operations fixes by @nekevss in https://github.com/boa-dev/boa/pull/4190
- Fix JsValue::to_json with cyclic values by @changhc in https://github.com/boa-dev/boa/pull/4176
- Fixed logo in documentation by @Razican in https://github.com/boa-dev/boa/pull/4208
- Enable `wasm_js` feature of getrandom in boa_engine crate by @HalidOdat in https://github.com/boa-dev/boa/pull/4241
- Fix panics on staging TypedArray.slice tests by @jedel1043 in https://github.com/boa-dev/boa/pull/4289
- Add the legacy enum-based JsValue implementation behind a flag by @hansl in https://github.com/boa-dev/boa/pull/4281
- Allow non-reserved keywords to be used as identifiers by @cijiugechu in https://github.com/boa-dev/boa/pull/4307
- Avoid fully awaiting futures in async event loops by @jedel1043 in https://github.com/boa-dev/boa/pull/4332
- Prevent evalutation of code with `--dump-ast` flag by @HalidOdat in https://github.com/boa-dev/boa/pull/4337
- Some general bug fixes for Temporal implementation by @nekevss in https://github.com/boa-dev/boa/pull/4349
- Fix UB in implementation of `NanBoxedValue` by @jedel1043 in https://github.com/boa-dev/boa/pull/4346
- fix(regexp): fix the capture group count assert to have the correct upper limit by @BDeuDev in https://github.com/boa-dev/boa/pull/4419
- Fix `contains_direct_eval` for ordinary function by @hpp2334 in https://github.com/boa-dev/boa/pull/4453
- Fix test262 comments on new PR by @jedel1043 in https://github.com/boa-dev/boa/pull/4465

### Internal Improvements

- Remove `try_break` macro in favour of question mark operator by @jedel1043 in https://github.com/boa-dev/boa/pull/4112
- Use cow-utils instead by @heygsc in https://github.com/boa-dev/boa/pull/4133
- Register VM by @HalidOdat in https://github.com/boa-dev/boa/pull/3798
- Bump MSRV to 1.84 by @jedel1043 in https://github.com/boa-dev/boa/pull/4165
- Avoid unnecessary calls of `to_string` in `cow_*` by @CrazyboyQCD in https://github.com/boa-dev/boa/pull/4166
- Apply rustc 1.85 lints by @jedel1043 in https://github.com/boa-dev/boa/pull/4170
- Some string cleanups by @CrazyboyQCD in https://github.com/boa-dev/boa/pull/4090
- Refactor bytecode representation by @raskad in https://github.com/boa-dev/boa/pull/4220
- Refactor registers to use the stack by @raskad in https://github.com/boa-dev/boa/pull/4263
- Bump Test262 hash commit and cleanup test features by @jedel1043 in https://github.com/boa-dev/boa/pull/4288
- Replace inner `Gc<T>` with `Rc<T>` for `SourceText` by @HalidOdat in https://github.com/boa-dev/boa/pull/4293
- Fix more Intl tests for latest ECMA402 spec by @jedel1043 in https://github.com/boa-dev/boa/pull/4304
- Fix lints for rustc 1.88 by @jedel1043 in https://github.com/boa-dev/boa/pull/4309
- Migrate `temporal_rs` from `0.0.9` to `0.0.10` by @HalidOdat in https://github.com/boa-dev/boa/pull/4318
- Mark the error path in `Call::operation` as cold. by @cijiugechu in https://github.com/boa-dev/boa/pull/4319
- Add arm64 linux nightly build by @nekevss in https://github.com/boa-dev/boa/pull/4321
- extract small_map as separate utility crate by @countradooku in https://github.com/boa-dev/boa/pull/4214
- Remove `Box<T>` from `JsValue` for `JsString` by @HalidOdat in https://github.com/boa-dev/boa/pull/4329
- Add `repr(C)` on `Object` to prevent field reordering by @HalidOdat in https://github.com/boa-dev/boa/pull/4343
- Fix clippy lints for Rust 1.89 by @nekevss in https://github.com/boa-dev/boa/pull/4368
- Add Nix flake by @xubaiwang in https://github.com/boa-dev/boa/pull/4381
- Apply clippy fixes for Rust 1.90 by @hansl in https://github.com/boa-dev/boa/pull/4423
- Fix UB on unaligned ArrayBuffers by @jedel1043 in https://github.com/boa-dev/boa/pull/4427
- Use same cache key for builds and tests by @jasonwilliams in https://github.com/boa-dev/boa/pull/4426

### Other Changes

- Bug fix: regex started with `/=` parsed as `AssignDiv` by @Nikita-str in https://github.com/boa-dev/boa/pull/4048
- Add fast path for number to `JsString` conversion by @CrazyboyQCD in https://github.com/boa-dev/boa/pull/4054
- Bump the rust-dependencies group with 3 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4069
- Add `fjcvtzs` instruction for `ARMv8.3` target by @CrazyboyQCD in https://github.com/boa-dev/boa/pull/4084
- Add a stress test to the parser to parser multi-millions tokens by @hansl in https://github.com/boa-dev/boa/pull/4086
- Bump the rust-dependencies group with 4 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4088
- Privatize `JsValue`'s internals and expose it through a JsVariant (with immutable reference) by @hansl in https://github.com/boa-dev/boa/pull/4080
- Skip creation of arguments object if possible by @raskad in https://github.com/boa-dev/boa/pull/4087
- Allow resizing of underlying ArrayBuffer from Rust by @hansl in https://github.com/boa-dev/boa/pull/4082
- Add inline cache for getting bindings from the global object by @raskad in https://github.com/boa-dev/boa/pull/4067
- Update Temporal ToIntegerIfIntegral, ToIntegerWithTruncation, and ToPositiveIntegerWithTruncation implementation by @nekevss in https://github.com/boa-dev/boa/pull/4081
- Adjust call to correct method for `PlainDateTime.prototype.since` by @nekevss in https://github.com/boa-dev/boa/pull/4096
- fix very minor typo shift -> unshift by @albertleigh in https://github.com/boa-dev/boa/pull/4097
- Bump the `temporal_rs` version and related changes by @nekevss in https://github.com/boa-dev/boa/pull/4098
- Bump test262 commit and changes to `boa_tester` to support sm changes by @nekevss in https://github.com/boa-dev/boa/pull/4099
- Bump the rust-dependencies group across 1 directory with 6 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4103
- Remove some clones and branches in hot `PropertyDescriptor` functions by @raskad in https://github.com/boa-dev/boa/pull/4104
- Bump syn from 2.0.93 to 2.0.95 in the rust-dependencies group by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4109
- Fix CI with the latest linter errors introduced in 1.84 by @hansl in https://github.com/boa-dev/boa/pull/4117
- Use `cow_to_ascii_uppercase` instead by @heygsc in https://github.com/boa-dev/boa/pull/4124
- Bump the rust-dependencies group across 1 directory with 7 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4131
- Set the array "length" property in `[[DefineOwnProperty]]` based on the array shape by @raskad in https://github.com/boa-dev/boa/pull/4101
- Bump the rust-dependencies group with 5 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4137
- Implement since and until methods for ZonedDateTime by @nekevss in https://github.com/boa-dev/boa/pull/4136
- Bump baptiste0928/cargo-install from 3.1.1 to 3.3.0 in the ci-dependencies group by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4138
- Make the HostHooks shareable between app and context by @hansl in https://github.com/boa-dev/boa/pull/4141
- Bump the rust-dependencies group across 1 directory with 3 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4148
- Implement an internal time type and Clock trait by @hansl in https://github.com/boa-dev/boa/pull/4149
- `SourceText` collection & `toString()` for fns and methods by @Nikita-str in https://github.com/boa-dev/boa/pull/4038
- `setTimeout`, `setInterval` and `clearInterval` (and the same `clearTimeout`) implementations by @hansl in https://github.com/boa-dev/boa/pull/4130
- Bump the rust-dependencies group with 3 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4151
- Bump the rust-dependencies group with 5 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4157
- Add trace function to Logger trait by @jamesthurley in https://github.com/boa-dev/boa/pull/4155
- Allow local parameters if mapped arguments object is not used by @raskad in https://github.com/boa-dev/boa/pull/4092
- Bump temporal_rs to Feb. 15 version + adjustments by @nekevss in https://github.com/boa-dev/boa/pull/4162
- Bump the rust-dependencies group with 3 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4163
- Add `PlainDateTime.prototype.round` implementation from `temporal_rs` by @nekevss in https://github.com/boa-dev/boa/pull/4164
- Fix some engine specific bugs and bump version by @nekevss in https://github.com/boa-dev/boa/pull/4167
- Simplify date parser by @CrazyboyQCD in https://github.com/boa-dev/boa/pull/4143
- Build out remaining method stubs for temporal by @nekevss in https://github.com/boa-dev/boa/pull/4172
- Bump the rust-dependencies group with 4 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4174
- Prioritize drop of common types for nan-boxed `JsValue` by @HalidOdat in https://github.com/boa-dev/boa/pull/4178
- Add changes from YearMonth parsing update and MonthCode addition by @nekevss in https://github.com/boa-dev/boa/pull/4173
- implementation of static method compare for duration from temporal.rs by @lockels in https://github.com/boa-dev/boa/pull/4189
- Unify release workflows by @HalidOdat in https://github.com/boa-dev/boa/pull/4192
- Temporal bump and fixes by @nekevss in https://github.com/boa-dev/boa/pull/4193
- Bump ring from 0.17.9 to 0.17.13 by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4201
- Bump the rust-dependencies group across 1 directory with 20 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4204
- feat(examples): Add comprehensive JsPromise example by @created-by-varun in https://github.com/boa-dev/boa/pull/4198
- Temporal bump and implementation of toPlainYearMonth and toPlainMonthDay by @lockels in https://github.com/boa-dev/boa/pull/4207
- Bump the rust-dependencies group with 5 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4209
- Bump the rust-dependencies group with 4 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4216
- Fix Rust 1.86.0 lints and update dependencies by @raskad in https://github.com/boa-dev/boa/pull/4228
- Move interop and module utilities from boa_interop into boa_engine by @hansl in https://github.com/boa-dev/boa/pull/4218
- Bump the rust-dependencies group with 3 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4229
- Temporal bump by @lockels in https://github.com/boa-dev/boa/pull/4231
- Bump the rust-dependencies group with 2 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4232
- Enable `PlainDate.prototype.toZonedDateTime` method by @nekevss in https://github.com/boa-dev/boa/pull/4233
- `PlainDateTime::toZonedDateTime` & `PlainDateTime::toPlainDate` implementations by @nekevss in https://github.com/boa-dev/boa/pull/4234
- Bump temporal_rs and add ZonedDateTime.prototype.round impl by @nekevss in https://github.com/boa-dev/boa/pull/4236
- Bump the rust-dependencies group across 1 directory with 6 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4239
- Bump the rust-dependencies group with 2 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4242
- Bump temporal_rs and remove dead code by @nekevss in https://github.com/boa-dev/boa/pull/4248
- Fix Rust 1.87.0 lints by @raskad in https://github.com/boa-dev/boa/pull/4249
- Avoid range checks in nan-boxing by @raskad in https://github.com/boa-dev/boa/pull/4251
- Update README.md to new version. by @tomoverlund in https://github.com/boa-dev/boa/pull/4254
- Fix the Set methods to pass the 262 tests by @hansl in https://github.com/boa-dev/boa/pull/4260
- Add support for LZ4 compression in embedded module loader by @hansl in https://github.com/boa-dev/boa/pull/4261
- Bump the rust-dependencies group across 1 directory with 3 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4264
- Fix AST `contains` operation by @HalidOdat in https://github.com/boa-dev/boa/pull/4267
- Bump temporal_rs and fix some order of operation issues by @nekevss in https://github.com/boa-dev/boa/pull/4268
- Escape analyze function scopes on non-arrow functions by @HalidOdat in https://github.com/boa-dev/boa/pull/4266
- Remove local binding's initialized state in `CallFrame` by @HalidOdat in https://github.com/boa-dev/boa/pull/4269
- Improve `README.md` by @HalidOdat in https://github.com/boa-dev/boa/pull/4270
- Add a #[boa_class] proc macro attribute by @hansl in https://github.com/boa-dev/boa/pull/4271
- Bump ICU4X to 2.0 by @jedel1043 in https://github.com/boa-dev/boa/pull/4274
- Bump the rust-dependencies group with 2 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4278
- Add `Span`s to expression nodes by @HalidOdat in https://github.com/boa-dev/boa/pull/4273
- Bump the rust-dependencies group with 4 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4283
- Bump temporal_rs to v0.0.9 by @nekevss in https://github.com/boa-dev/boa/pull/4285
- remove boa_profiler and profiler calls. update docs. (#4272) by @Timkarx in https://github.com/boa-dev/boa/pull/4276
- Add a #[boa(rename = ...)] attribute to TryFromJs and TryIntoJs derive macros by @hansl in https://github.com/boa-dev/boa/pull/4286
- Add a js_value! macro to allow creation of JsValue from JSON-like DSL by @hansl in https://github.com/boa-dev/boa/pull/4282
- Bump baptiste0928/cargo-install from 3.3.0 to 3.3.1 in the ci-dependencies group by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4295
- Bump the rust-dependencies group with 4 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4296
- Update phf requirement from 0.11.2 to 0.12.1 in /tests/fuzz in the fuzz-dependencies group by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4297
- Fix `JsValue::mul` to handle zero times a negative integer by @Rafferty97 in https://github.com/boa-dev/boa/pull/4303
- Move the URL class to using the boa_class macro by @hansl in https://github.com/boa-dev/boa/pull/4294
- Hint branch predictor that surrogate pairs are rare by @cijiugechu in https://github.com/boa-dev/boa/pull/4312
- cli: use `mimalloc` as global allocator on windows by @cijiugechu in https://github.com/boa-dev/boa/pull/4314
- Refactor the `Binding` modifiers to use bitflags by @cijiugechu in https://github.com/boa-dev/boa/pull/4316
- Implement type erased `Gc<T>` by @HalidOdat in https://github.com/boa-dev/boa/pull/4291
- inline `Gc::inner_ptr` by @cijiugechu in https://github.com/boa-dev/boa/pull/4317
- Shrink `JsStr` from 24 to 16 bytes by @HalidOdat in https://github.com/boa-dev/boa/pull/4322
- Bump tokio from 1.45.1 to 1.46.1 in the rust-dependencies group by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4324
- Refactor `JsObject` to always be size 8 by @raskad in https://github.com/boa-dev/boa/pull/4287
- Add a new `Nullable<T>` type that deserialize null to `Nullable::<T>::Null` by @hansl in https://github.com/boa-dev/boa/pull/4325
- Refactor `JsString`'s static string tagging by @HalidOdat in https://github.com/boa-dev/boa/pull/4334
- Bump the rust-dependencies group with 6 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4335
- Implement native backtrace positions by @HalidOdat in https://github.com/boa-dev/boa/pull/4306
- Fix documentation for NativeFunction::from_async_fn by @jedel1043 in https://github.com/boa-dev/boa/pull/4344
- Bump the rust-dependencies group with 2 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4347
- Bump temporal_rs version to v0.0.11 by @nekevss in https://github.com/boa-dev/boa/pull/4348
- Add an empty EmbeddedModuleLoader default by @hansl in https://github.com/boa-dev/boa/pull/4351
- Fix a camel case bug by @hansl in https://github.com/boa-dev/boa/pull/4352
- Temporal documentation update, part 1 by @nekevss in https://github.com/boa-dev/boa/pull/4353
- Temporal documentation update, part 2 by @nekevss in https://github.com/boa-dev/boa/pull/4354
- Temporal documentation, part 3 by @nekevss in https://github.com/boa-dev/boa/pull/4355
- Temporal documentation update, part 4 by @nekevss in https://github.com/boa-dev/boa/pull/4356
- Bump tokio from 1.46.1 to 1.47.0 in the rust-dependencies group by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4357
- `Fetch` API (beta) by @hansl in https://github.com/boa-dev/boa/pull/4338
- Remove `Box` from `Object`'s data member by @HalidOdat in https://github.com/boa-dev/boa/pull/4342
- Bump the rust-dependencies group with 6 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4361
- Add support for utf16(-le|be) and use the class API by @hansl in https://github.com/boa-dev/boa/pull/4358
- Bump temporal_rs version to v0.0.12 by @nekevss in https://github.com/boa-dev/boa/pull/4367
- Allow public access to the full position of a call frame by @hansl in https://github.com/boa-dev/boa/pull/4365
- Bump the rust-dependencies group with 5 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4374
- Bump slab from 0.4.10 to 0.4.11 by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4376
- Implement queueMicrotask() and a test for it by @hansl in https://github.com/boa-dev/boa/pull/4359
- Bump actions/checkout from 4 to 5 by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4386
- Bump the rust-dependencies group with 4 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4387
- Improve object display by @xubaiwang in https://github.com/boa-dev/boa/pull/4377
- Fix broken PlainMonthDay.from tests by @nekevss in https://github.com/boa-dev/boa/pull/4389
- Fix final Temporal.Instant test in built-ins test suite by @nekevss in https://github.com/boa-dev/boa/pull/4388
- Remove alignment of property keys with identation by @hansl in https://github.com/boa-dev/boa/pull/4390
- Bump temporal_rs version to v0.0.14 by @nekevss in https://github.com/boa-dev/boa/pull/4391
- Update `Math.sumPrecise` to remove `SummationState` by @nekevss in https://github.com/boa-dev/boa/pull/4392
- Update phf requirement from 0.12.1 to 0.13.1 in /tests/fuzz in the fuzz-dependencies group by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4384
- Fix index access in `JumpTable` instruction by @HalidOdat in https://github.com/boa-dev/boa/pull/4372
- Bump the rust-dependencies group with 5 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4395
- Fix: prevent OOB panic in decodeURI by tightening percent-decoding bounds; add test for incomplete escape %E7%9A%8 (#4404) by @hamflx in https://github.com/boa-dev/boa/pull/4405
- Implement a `JsValueStore` as well as structuredClone and tests by @hansl in https://github.com/boa-dev/boa/pull/4366
- Bump baptiste0928/cargo-install from 3.3.1 to 3.3.2 in the ci-dependencies group by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4385
- Update hashbrown requirement from 0.15.5 to 0.16.0 in /tests/fuzz in the fuzz-dependencies group by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4396
- Replace the String producing Display logic to using a Formatter by @hansl in https://github.com/boa-dev/boa/pull/4393
- Propagate AST errors to the user by @hansl in https://github.com/boa-dev/boa/pull/4408
- Remove the boa_interop module by @hansl in https://github.com/boa-dev/boa/pull/4407
- Fix final `Temporal.PlainTime.from` tests by @nekevss in https://github.com/boa-dev/boa/pull/4411
- Bump the rust-dependencies group with 3 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4413
- Bump actions/setup-node from 4 to 5 by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4412
- Various quality of life improvements to the CLI by @hansl in https://github.com/boa-dev/boa/pull/4414
- Implement `Date` and `RegExp` `JsValueStore` from/to by @hansl in https://github.com/boa-dev/boa/pull/4415
- Use async channels for Atomics.waitAsync implementation by @jedel1043 in https://github.com/boa-dev/boa/pull/4418
- Bump the rust-dependencies group across 1 directory with 7 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4421
- Unblock Context::run_jobs when no timeouts need to be run by @hansl in https://github.com/boa-dev/boa/pull/4416
- Fix 2 UBs, and cleanup `GcRefCell` by @hansl in https://github.com/boa-dev/boa/pull/4422
- Bump temporal_rs version to v0.0.16 by @nekevss in https://github.com/boa-dev/boa/pull/4425
- Fix the CLI when it is not attached to a TTY by @hansl in https://github.com/boa-dev/boa/pull/4424
- Bump the rust-dependencies group with 6 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4429
- Implement `JsValueStore` for `SharedArrayBuffer` and `postMessage` by @hansl in https://github.com/boa-dev/boa/pull/4417
- fix: comment typo by @jasonmilad in https://github.com/boa-dev/boa/pull/4430
- Editorconfig: specify indentation and dont overrule Makefile by @hansl in https://github.com/boa-dev/boa/pull/4446
- Add a simple cargo-make to the project by @hansl in https://github.com/boa-dev/boa/pull/4437
- Update to temporal_rs to 0.1 release by @nekevss in https://github.com/boa-dev/boa/pull/4433
- Add minimal CI task to cargo-make by @nekevss in https://github.com/boa-dev/boa/pull/4448
- Improve regular expression flags parsing by @hansl in https://github.com/boa-dev/boa/pull/4434
- Bump the rust-dependencies group with 4 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4449
- Only validate the RegExp, do not optimize/compile it by @hansl in https://github.com/boa-dev/boa/pull/4451
- Bump peter-evans/create-or-update-comment from 4 to 5 by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4456
- Bump peter-evans/find-comment from 3 to 4 by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4457
- Bump bytemuck from 1.23.2 to 1.24.0 in the rust-dependencies group by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4458
- Allow printing test262 comment on PRs from forks by @jedel1043 in https://github.com/boa-dev/boa/pull/4428
- perf: Improve `Math.sumPrecise` Performance by @Gumichocopengin8 in https://github.com/boa-dev/boa/pull/4462
- Bump the rust-dependencies group with 3 updates by @dependabot[bot] in https://github.com/boa-dev/boa/pull/4467

### New Contributors

- @zzzdong made their first contribution in https://github.com/boa-dev/boa/pull/4058
- @albertleigh made their first contribution in https://github.com/boa-dev/boa/pull/4097
- @heygsc made their first contribution in https://github.com/boa-dev/boa/pull/4124
- @jamesthurley made their first contribution in https://github.com/boa-dev/boa/pull/4155
- @lockels made their first contribution in https://github.com/boa-dev/boa/pull/4189
- @changhc made their first contribution in https://github.com/boa-dev/boa/pull/4176
- @created-by-varun made their first contribution in https://github.com/boa-dev/boa/pull/4198
- @tomoverlund made their first contribution in https://github.com/boa-dev/boa/pull/4254
- @Hemenguelbindi made their first contribution in https://github.com/boa-dev/boa/pull/4145
- @Timkarx made their first contribution in https://github.com/boa-dev/boa/pull/4276
- @Rafferty97 made their first contribution in https://github.com/boa-dev/boa/pull/4303
- @cijiugechu made their first contribution in https://github.com/boa-dev/boa/pull/4307
- @countradooku made their first contribution in https://github.com/boa-dev/boa/pull/4214
- @xubaiwang made their first contribution in https://github.com/boa-dev/boa/pull/4381
- @hamflx made their first contribution in https://github.com/boa-dev/boa/pull/4405
- @BDeuDev made their first contribution in https://github.com/boa-dev/boa/pull/4419
- @jasonmilad made their first contribution in https://github.com/boa-dev/boa/pull/4430
- @hpp2334 made their first contribution in https://github.com/boa-dev/boa/pull/4453
- @Gumichocopengin8 made their first contribution in https://github.com/boa-dev/boa/pull/4462
- @mdrokz made their first contribution in https://github.com/boa-dev/boa/pull/4466
- @rrogerc made their first contribution in https://github.com/boa-dev/boa/pull/4459

**Full Changelog**: https://github.com/boa-dev/boa/compare/v0.20...v0.21

## [0.20.0 (2024-12-05)](https://github.com/boa-dev/boa/compare/v0.19.1...v0.20.0)

### Feature Enhancements

- Add a js_error! macro to create opaque errors by @hansl in https://github.com/boa-dev/boa/pull/3920
- Update `Instant` for new Temporal functionality by @nekevss in https://github.com/boa-dev/boa/pull/3928
- Add a way to add setters/getters in js_class! by @hansl in https://github.com/boa-dev/boa/pull/3911
- Fix lints from rustc 1.80.0 by @jedel1043 in https://github.com/boa-dev/boa/pull/3936
- Add a JsError::from_rust constructor to create native errors from Rust by @hansl in https://github.com/boa-dev/boa/pull/3921
- add some temporal methods by @jasonwilliams in https://github.com/boa-dev/boa/pull/3856
- Allow a custom Logger to be used as the backend for boa_runtime::Console by @hansl in https://github.com/boa-dev/boa/pull/3943
- Add more utility functions around modules and exports by @hansl in https://github.com/boa-dev/boa/pull/3937
- Allow trailing commas in js_class functions by @hansl in https://github.com/boa-dev/boa/pull/3964
- Implement `Atomics.pause` by @jedel1043 in https://github.com/boa-dev/boa/pull/3956
- Add a clone_inner method to allow cloning of inner data by @hansl in https://github.com/boa-dev/boa/pull/3968
- fix: ignore `debugger` statement by @shurizzle in https://github.com/boa-dev/boa/pull/3976
- Add support for boa(rename = "") in TryFromJs derive by @hansl in https://github.com/boa-dev/boa/pull/3980
- Add an "iter()" method to Js\*Array for convenience by @hansl in https://github.com/boa-dev/boa/pull/3986
- A simple module loader from a function by @hansl in https://github.com/boa-dev/boa/pull/3932
- Add a way for js_error! macro to create native errors with message by @hansl in https://github.com/boa-dev/boa/pull/3971
- Limit actions runs to 1 per branch and fix macos release by @jedel1043 in https://github.com/boa-dev/boa/pull/3996
- Add TextEncoder, TextDecoder implementations to boa_runtime by @hansl in https://github.com/boa-dev/boa/pull/3994
- Add TryFromJs for TypedJsFunction and more tests by @hansl in https://github.com/boa-dev/boa/pull/3981
- Add context to the console `Logger` trait by @hansl in https://github.com/boa-dev/boa/pull/4005
- Add a URL class to boa_runtime by @hansl in https://github.com/boa-dev/boa/pull/4004
- Add a display_lossy() to write a JsString lossily by @hansl in https://github.com/boa-dev/boa/pull/4023
- `TryIntoJs` trait and derive macro for it by @Nikita-str in https://github.com/boa-dev/boa/pull/3999
- console.debug() should use a debug Logger method by @hansl in https://github.com/boa-dev/boa/pull/4019
- `TryFromJs` from `JsMap` for `HashMap` & `BtreeMap` by @Nikita-str in https://github.com/boa-dev/boa/pull/3998
- Add string builder to build `JsString` by @CrazyboyQCD in https://github.com/boa-dev/boa/pull/3915

### Bug Fixes

- Implement `Math.pow` function according to ECMAScript specification by @magic-akari in https://github.com/boa-dev/boa/pull/3916
- Fix temporal builtin properties by @nekevss in https://github.com/boa-dev/boa/pull/3930
- Fix wrong `neg` operation by @CrazyboyQCD in https://github.com/boa-dev/boa/pull/3926
- Fix destructuring assignment evaluation order by @raskad in https://github.com/boa-dev/boa/pull/3934
- Fix various parser idempotency issues and parsing errors by @raskad in https://github.com/boa-dev/boa/pull/3917
- Implement new spec changes for `AsyncGenerator` by @jedel1043 in https://github.com/boa-dev/boa/pull/3950
- Refactor ast function types by @raskad in https://github.com/boa-dev/boa/pull/3931
- Fix `js_str` macro to correctly handle latin1 strings by @jedel1043 in https://github.com/boa-dev/boa/pull/3959
- Allow dead code for code that is newly detected as unused by @hansl in https://github.com/boa-dev/boa/pull/3984
- Allow warnings when running CI on release branches by @jedel1043 in https://github.com/boa-dev/boa/pull/3990
- docs: Fix link to examples by @it-a-me in https://github.com/boa-dev/boa/pull/4007
- `IntegerOrInfinity` `eq` bug fix by @Nikita-str in https://github.com/boa-dev/boa/pull/4010

### Internal Improvements

- Refactor `RawJsString`'s representation to make `JsString`s construction from string literal heap-allocation free by @CrazyboyQCD in https://github.com/boa-dev/boa/pull/3935
- Split default icu data into lazily deserialized parts by @jedel1043 in https://github.com/boa-dev/boa/pull/3948
- Add clippy for denying print and eprints by @hansl in https://github.com/boa-dev/boa/pull/3967
- Refactor iterator APIs to be on parity with the latest spec by @jedel1043 in https://github.com/boa-dev/boa/pull/3962
- Add support for Trace, Finalize and JsData for Convert<> by @hansl in https://github.com/boa-dev/boa/pull/3970
- use with_capacity to reduce re-allocations fixes #3896 by @jasonwilliams in https://github.com/boa-dev/boa/pull/3961
- add nightly build by @jasonwilliams in https://github.com/boa-dev/boa/pull/4026
- Patch the indentation in nightly_build.yml by @nekevss in https://github.com/boa-dev/boa/pull/4028
- Update night build's rename binary step by @nekevss in https://github.com/boa-dev/boa/pull/4032
- Use upload-rust-binary-action for nightly release by @nekevss in https://github.com/boa-dev/boa/pull/4040
- Fix `ref` value in nightly and add target to nightly release by @nekevss in https://github.com/boa-dev/boa/pull/4042
- Reduce environment allocations by @raskad in https://github.com/boa-dev/boa/pull/4002

### Other Changes

- Implement more Temporal functionality by @nekevss in https://github.com/boa-dev/boa/pull/3924
- Add a Source::with_path method to set the path on a Source by @hansl in https://github.com/boa-dev/boa/pull/3941
- Add spec edition 15 to the tester by @jedel1043 in https://github.com/boa-dev/boa/pull/3957
- Rename as_promise to as_promise_object and add as_promise -> JsPromise by @hansl in https://github.com/boa-dev/boa/pull/3965
- Build out partial record functionality, property bag construction, and `with` methods by @nekevss in https://github.com/boa-dev/boa/pull/3955
- Enable CI for release branches by @jedel1043 in https://github.com/boa-dev/boa/pull/3987
- Add a display type for JsString to allow formatting without allocations by @hansl in https://github.com/boa-dev/boa/pull/3951
- Add TryIntoJsResult for vectors by @hansl in https://github.com/boa-dev/boa/pull/3993
- Add tests from WPT and fix them in the Console by @hansl in https://github.com/boa-dev/boa/pull/3979
- Update changelog for v0.19.1 by @jedel1043 in https://github.com/boa-dev/boa/pull/3995
- Implement register allocation by @HalidOdat in https://github.com/boa-dev/boa/pull/3942
- Implement scope analysis and local variables by @raskad in https://github.com/boa-dev/boa/pull/3988
- `JsValue::to_json` fix integer property keys by @Nikita-str in https://github.com/boa-dev/boa/pull/4011
- Some optimizations on `Error` by @CrazyboyQCD in https://github.com/boa-dev/boa/pull/4020
- Option::None should try into Undefined, not Null by @hansl in https://github.com/boa-dev/boa/pull/4029
- Some string optimizations by @CrazyboyQCD in https://github.com/boa-dev/boa/pull/4030
- Add a JsPromise::from_result for convenience by @hansl in https://github.com/boa-dev/boa/pull/4039
- Fix misspelled permissions in nightly build action by @nekevss in https://github.com/boa-dev/boa/pull/4041
- Remove dockerfile from documentation by @4yman-0 in https://github.com/boa-dev/boa/pull/4046
- Bump dependencies with breaking changes by @jedel1043 in https://github.com/boa-dev/boa/pull/4050
- Migrate to fast-float2 by @jedel1043 in https://github.com/boa-dev/boa/pull/4052

### New Contributors

- @magic-akari made their first contribution in https://github.com/boa-dev/boa/pull/3916
- @shurizzle made their first contribution in https://github.com/boa-dev/boa/pull/3976
- @it-a-me made their first contribution in https://github.com/boa-dev/boa/pull/4007
- @Nikita-str made their first contribution in https://github.com/boa-dev/boa/pull/4010
- @4yman-0 made their first contribution in https://github.com/boa-dev/boa/pull/4046

**Full Changelog**: https://github.com/boa-dev/boa/compare/v0.19...v0.20.0

## [0.19.1 (2024-09-11)](https://github.com/boa-dev/boa/compare/v0.19...v0.19.1)

### Bug Fixes

- Implement new spec changes for `AsyncGenerator` by @jedel1043 in https://github.com/boa-dev/boa/pull/3950
- Allow dead code for code that is newly detected as unused by @hansl in https://github.com/boa-dev/boa/pull/3984
- Allow warnings when running CI on release branches by @jedel1043 in https://github.com/boa-dev/boa/pull/3990

### Internal Improvements

- Add spec edition 15 to the tester by @jedel1043 in https://github.com/boa-dev/boa/pull/3957
- Enable CI for release branches by @jedel1043 in https://github.com/boa-dev/boa/pull/3987

**Full Changelog**: https://github.com/boa-dev/boa/compare/v0.19...v0.19.1

## [0.19.0 (2024-07-08)](https://github.com/boa-dev/boa/compare/v0.18...v0.19)

### Feature Enhancements

- Add release binary striping by @Razican in https://github.com/boa-dev/boa/pull/3727
- Added NPM publish workflow by @Razican in https://github.com/boa-dev/boa/pull/3725
- Remove references to dev docs and npm dependencies by @jedel1043 in https://github.com/boa-dev/boa/pull/3787
- Cleanup tester deps and patterns by @jedel1043 in https://github.com/boa-dev/boa/pull/3792
- Build docs.rs docs with all features enabled by @jedel1043 in https://github.com/boa-dev/boa/pull/3794
- Add a new type Convert<> to convert values by @hansl in https://github.com/boa-dev/boa/pull/3786
- Add functions to create modules from a JSON value by @hansl in https://github.com/boa-dev/boa/pull/3804
- Add an embed_module!() macro to boa_interop by @hansl in https://github.com/boa-dev/boa/pull/3784
- Add a ContextData struct to inject host defined types from the context by @hansl in https://github.com/boa-dev/boa/pull/3802
- Implement object keys access by @HalidOdat in https://github.com/boa-dev/boa/pull/3832
- Group dependabot updates by @jedel1043 in https://github.com/boa-dev/boa/pull/3863
- Adding TryFromJs implementations for BTreeMap and HashMap by @hansl in https://github.com/boa-dev/boa/pull/3844
- Adding TryFromJs implementations for tuples by @hansl in https://github.com/boa-dev/boa/pull/3843
- Add a js_class to implement the Class trait without boilerplate by @hansl in https://github.com/boa-dev/boa/pull/3872
- Implement lossless TryFromJs for integers from f64 by @HalidOdat in https://github.com/boa-dev/boa/pull/3907

### Bug Fixes

- Close for-of iterator when the loop body throws by @raskad in https://github.com/boa-dev/boa/pull/3734
- Add default value handling for destructuring property access arrays by @raskad in https://github.com/boa-dev/boa/pull/3738
- Fix invalid syntax errors for allowed `let` as variable names by @raskad in https://github.com/boa-dev/boa/pull/3743
- Fix parsing of `async` in for-of loops by @raskad in https://github.com/boa-dev/boa/pull/3745
- Fix parsing of binding identifier in try catch parameters by @raskad in https://github.com/boa-dev/boa/pull/3752
- Add missing environment creation in initial iteration of for loop by @raskad in https://github.com/boa-dev/boa/pull/3751
- chore: Update README link to reflect new site paths by @NickTomlin in https://github.com/boa-dev/boa/pull/3793
- Fix order of `ToString` call in `Function` constructor by @HalidOdat in https://github.com/boa-dev/boa/pull/3820
- Fix CI for nextest step by @jedel1043 in https://github.com/boa-dev/boa/pull/3862
- Fix base objects in `with` statements by @raskad in https://github.com/boa-dev/boa/pull/3870
- Fix boa cli history by @raskad in https://github.com/boa-dev/boa/pull/3875
- Fix hashbang comments by using proper goal symbols by @raskad in https://github.com/boa-dev/boa/pull/3876
- Fix AsyncGenerator to correctly handle `return` inside `then` by @jedel1043 in https://github.com/boa-dev/boa/pull/3879
- Fix HomeObject for private class methods by @raskad in https://github.com/boa-dev/boa/pull/3897
- Fix evaluation order in destructive property assignments by @raskad in https://github.com/boa-dev/boa/pull/3895

### Internal Improvements

- Apply new clippy lints for rustc 1.77 by @jedel1043 in https://github.com/boa-dev/boa/pull/3759
- Change dependabot interval to weekly by @jedel1043 in https://github.com/boa-dev/boa/pull/3758
- Dense array storage variants for `i32` and `f64` by @HalidOdat in https://github.com/boa-dev/boa/pull/3760
- Optimize number to `PropertyKey` conversion by @HalidOdat in https://github.com/boa-dev/boa/pull/3769
- don't run test262 on push by @jasonwilliams in https://github.com/boa-dev/boa/pull/3774
- Check that `min <= max` in `clamp_finite` by @jedel1043 in https://github.com/boa-dev/boa/pull/3699
- Decouple `Context` from `ByteCompiler` by @HalidOdat in https://github.com/boa-dev/boa/pull/3829
- Implement latin1 encoded `JsString`s by @HalidOdat in https://github.com/boa-dev/boa/pull/3450
- Replace `js_str` with `js_string` in examples by @getong in https://github.com/boa-dev/boa/pull/3836
- Separate `JsString` into its own crate by @HalidOdat in https://github.com/boa-dev/boa/pull/3837
- Bump temporal_rs to latest commit by @jedel1043 in https://github.com/boa-dev/boa/pull/3880
- Remove `FormalParameterList` from `CodeBlock` by @HalidOdat in https://github.com/boa-dev/boa/pull/3882

### Other Changes

- Fix a few Duration code typos by @robot-head in https://github.com/boa-dev/boa/pull/3730
- Add a try_from_js implementation for Vec<T> (accept any Array-like) by @hansl in https://github.com/boa-dev/boa/pull/3755
- Swap to Duration::round from temporal_rs by @robot-head in https://github.com/boa-dev/boa/pull/3731
- Cache `this` value by @HalidOdat in https://github.com/boa-dev/boa/pull/3771
- Allow deserialization of missing objects properties into Option<> by @hansl in https://github.com/boa-dev/boa/pull/3767
- Optimize Regex match check by @HalidOdat in https://github.com/boa-dev/boa/pull/3779
- Add a boa_interop crate by @hansl in https://github.com/boa-dev/boa/pull/3772
- Add a path to Module (and expose it in Referrer) by @hansl in https://github.com/boa-dev/boa/pull/3783
- Properly resolve paths in SimpleModuleLoader and add path to Referrer::Script by @hansl in https://github.com/boa-dev/boa/pull/3791
- Fix SimpleModuleLoader on Windows by @hansl in https://github.com/boa-dev/boa/pull/3795
- Add more utility traits and funtions to boa_interop by @hansl in https://github.com/boa-dev/boa/pull/3773
- Implement Promise.try() by @linusg in https://github.com/boa-dev/boa/pull/3800
- Implement TryFromJs for Either<L, R> by @hansl in https://github.com/boa-dev/boa/pull/3822
- Fix Rust 1.78.0 Clippy lints by @HalidOdat in https://github.com/boa-dev/boa/pull/3838
- Switch from actions-rs/toolchain to dtolnay/rust-toolchain by @raskad in https://github.com/boa-dev/boa/pull/3845
- Replace archived github actions from actions-rs by @raskad in https://github.com/boa-dev/boa/pull/3848
- Add matrix badge and update communication to include matrix by @nekevss in https://github.com/boa-dev/boa/pull/3865
- Add groupCollapsed by @leoflalv in https://github.com/boa-dev/boa/pull/3867
- Bump ICU4X to 1.5 and cleanup Intl by @jedel1043 in https://github.com/boa-dev/boa/pull/3868
- Update regress to v0.10.0 by @raskad in https://github.com/boa-dev/boa/pull/3869
- Combine `HasProperty` and `Get` operations when possible by @raskad in https://github.com/boa-dev/boa/pull/3883
- Remove some environment clones by @raskad in https://github.com/boa-dev/boa/pull/3884
- Refactor call frame access to avoid panic checks by @raskad in https://github.com/boa-dev/boa/pull/3888
- Remove `Temporal.Calendar` and `Temporal.TimeZone` by @jedel1043 in https://github.com/boa-dev/boa/pull/3890
- Update Temporal rounding and implement additional methods by @nekevss in https://github.com/boa-dev/boa/pull/3892
- format code in comments by @jasonwilliams in https://github.com/boa-dev/boa/pull/3902
- Updates to temporal_rs version and temporal methods by @nekevss in https://github.com/boa-dev/boa/pull/3900
- Patch regression from change to to-relative-to-object by @nekevss in https://github.com/boa-dev/boa/pull/3906
- Add `get_unchecked` method to `JsString` and `JsStr` by @CrazyboyQCD in https://github.com/boa-dev/boa/pull/3898
- bump gc threshold by @jasonwilliams in https://github.com/boa-dev/boa/pull/3908
- update versions and ABOUT files by @jasonwilliams in https://github.com/boa-dev/boa/pull/3903
- Cleanup README.md and contributor documentation by @jedel1043 in https://github.com/boa-dev/boa/pull/3909
- Refactor environment stack to remove some panics by @raskad in https://github.com/boa-dev/boa/pull/3893

### New Contributors

- @robot-head made their first contribution in https://github.com/boa-dev/boa/pull/3730
- @hansl made their first contribution in https://github.com/boa-dev/boa/pull/3755
- @NickTomlin made their first contribution in https://github.com/boa-dev/boa/pull/3793
- @linusg made their first contribution in https://github.com/boa-dev/boa/pull/3800
- @getong made their first contribution in https://github.com/boa-dev/boa/pull/3836
- @leoflalv made their first contribution in https://github.com/boa-dev/boa/pull/3867
- @CrazyboyQCD made their first contribution in https://github.com/boa-dev/boa/pull/3898

**Full Changelog**: https://github.com/boa-dev/boa/compare/v0.18...v0.19

## [0.18.0 (2024-03-04)](https://github.com/boa-dev/boa/compare/v0.17...v0.18)

### Feature Enhancements

- Format let-else expressions by @jedel1043 in https://github.com/boa-dev/boa/pull/3102
- Add regexp indices (`d` flag) support by @dirkdev98 in https://github.com/boa-dev/boa/pull/3094
- Add missing 'unscopables' to `Array.prototype[@@unscopables]` by @dirkdev98 in https://github.com/boa-dev/boa/pull/3111
- Updated Fuzzer dependencies and added them to Dependabot by @Razican in https://github.com/boa-dev/boa/pull/3124
- Implement `findLast` and `findLastIndex` on TypedArray by @dirkdev98 in https://github.com/boa-dev/boa/pull/3135
- Implement i128/u128 to JsBigInt conversions by @AlvinKuruvilla in https://github.com/boa-dev/boa/pull/3129
- Implement `String.prototype.isWellFormed` and `String.prototype.toWellFormed` by @raskad in https://github.com/boa-dev/boa/pull/3187
- Clarify usage section in `README.md` by @postmeback in https://github.com/boa-dev/boa/pull/3092
- Log traces even without message (boa_runtime) by @kelbazz in https://github.com/boa-dev/boa/pull/3193
- Implement ephemeron-based weak map by @jedel1043 in https://github.com/boa-dev/boa/pull/3052
- Improve bytecompiler bytecode generation. by @HalidOdat in https://github.com/boa-dev/boa/pull/3188
- Add `Instruction` and `InstructionIterator` by @HalidOdat in https://github.com/boa-dev/boa/pull/3201
- Add ECMAScript 14 to `boa_tester` by @jedel1043 in https://github.com/boa-dev/boa/pull/3273
- Bump `rust-version` to 1.71 by @jedel1043 in https://github.com/boa-dev/boa/pull/3290
- Lazily download `test262` repository by @HalidOdat in https://github.com/boa-dev/boa/pull/3214
- Implement `Gc::new_cyclic` by @jedel1043 in https://github.com/boa-dev/boa/pull/3292
- Implement `Intl.PluralRules` by @jedel1043 in https://github.com/boa-dev/boa/pull/3298
- Implement step 5 in `RegExp` constructor by @HalidOdat in https://github.com/boa-dev/boa/pull/3305
- Replace #[deny] with #[warn] by @jedel1043 in https://github.com/boa-dev/boa/pull/3309
- Bump ICU4X to 1.3 by @jedel1043 in https://github.com/boa-dev/boa/pull/3306
- Migrate to workspace deps by @jedel1043 in https://github.com/boa-dev/boa/pull/3313
- Implement `[[HostDefined]]` field on `Realm`s by @HalidOdat in https://github.com/boa-dev/boa/pull/2952
- Introduce experimental features by @jedel1043 in https://github.com/boa-dev/boa/pull/3318
- Introduce a `Class` map by @jedel1043 in https://github.com/boa-dev/boa/pull/3315
- Fix `Function.prototype.toString()` by @HalidOdat in https://github.com/boa-dev/boa/pull/3374
- First portion of the Temporal implementation by @nekevss in https://github.com/boa-dev/boa/pull/3277
- Update feature flags to specific feature flag by @nekevss in https://github.com/boa-dev/boa/pull/3376
- Implement `[[HostDefined]]` for `Module` and `Script` by @arexon in https://github.com/boa-dev/boa/pull/3381
- Implement synthetic modules by @jedel1043 in https://github.com/boa-dev/boa/pull/3294
- Prevent `test262` repository update if not needed by @HalidOdat in https://github.com/boa-dev/boa/pull/3386
- Implement `SharedArrayBuffer` by @jedel1043 in https://github.com/boa-dev/boa/pull/3384
- Add `Context::create_realm` by @johnyob in https://github.com/boa-dev/boa/pull/3369
- Introduce a thread safe version of `JsError` by @jedel1043 in https://github.com/boa-dev/boa/pull/3398
- Implement asynchronous evaluation of scripts by @jedel1043 in https://github.com/boa-dev/boa/pull/3044
- Feature `get/set $boa.limits.stack` by @HalidOdat in https://github.com/boa-dev/boa/pull/3385
- Implement `change-array-by-copy` methods by @jedel1043 in https://github.com/boa-dev/boa/pull/3412
- Implement the `array-grouping` proposal by @jedel1043 in https://github.com/boa-dev/boa/pull/3420
- Implement `Atomics` builtin by @jedel1043 in https://github.com/boa-dev/boa/pull/3394
- Migrate to workspace lints by @jedel1043 in https://github.com/boa-dev/boa/pull/3334
- Bump ICU4X to 1.4 and finish Intl impls with new APIs by @jedel1043 in https://github.com/boa-dev/boa/pull/3469
- Class: Switch `make_data` parameter from `this` to `new_target` by @johnyob in https://github.com/boa-dev/boa/pull/3478
- Add utility methods to the `Class` trait by @jedel1043 in https://github.com/boa-dev/boa/pull/3488
- Simplify `Icu` API by @jedel1043 in https://github.com/boa-dev/boa/pull/3503
- Add UTF-16 input parsing by @raskad in https://github.com/boa-dev/boa/pull/3538
- Remove allocations from `HostDefined::get_many_mut` by @jedel1043 in https://github.com/boa-dev/boa/pull/3606
- Implement getter for `ArrayBuffer` data by @HalidOdat in https://github.com/boa-dev/boa/pull/3610
- Implement non-erased `JsObject`s by @jedel1043 in https://github.com/boa-dev/boa/pull/3618
- Update regress to v0.8.0 and use UTF16 / UCS2 matching by @raskad in https://github.com/boa-dev/boa/pull/3627
- Cleanup 262 tester and stabilize some experimental features by @jedel1043 in https://github.com/boa-dev/boa/pull/3632
- Improve typing of `DataView` and related objects by @jedel1043 in https://github.com/boa-dev/boa/pull/3626
- Close sync iterator when async wrapper yields rejection by @jedel1043 in https://github.com/boa-dev/boa/pull/3633
- Implement resizable buffers by @jedel1043 in https://github.com/boa-dev/boa/pull/3634
- Implement stage 3 feature "arraybuffer-transfer" by @jedel1043 in https://github.com/boa-dev/boa/pull/3649
- Implement prototype of `NumberFormat` by @jedel1043 in https://github.com/boa-dev/boa/pull/3669
- Add example for async module fetches by @jedel1043 in https://github.com/boa-dev/boa/pull/3012
- Js typed array methods by @AngeloChecked in https://github.com/boa-dev/boa/pull/3481
- Create tool to regenerate `ABOUT.md` by @jedel1043 in https://github.com/boa-dev/boa/pull/3692
- Implement RegExp `v` flag by @raskad in https://github.com/boa-dev/boa/pull/3695

### Bug Fixes

- Allow escaped yield and await in labelled statement by @raskad in https://github.com/boa-dev/boa/pull/3117
- `TypedArray.prototype.values()` and `TypedArray.prototype[@@iterator]` should be equal by @HalidOdat in https://github.com/boa-dev/boa/pull/3096
- Fix TypedArrayConstructors tests by @raskad in https://github.com/boa-dev/boa/pull/3171
- Close iterator after generator return call while array destructuring assignment by @HalidOdat in https://github.com/boa-dev/boa/pull/3164
- Fix remaining TypedArray bugs by @raskad in https://github.com/boa-dev/boa/pull/3186
- Add early errors for `LexicalDeclaration` by @raskad in https://github.com/boa-dev/boa/pull/3207
- Fix switch statement `break` and `continue` return values by @raskad in https://github.com/boa-dev/boa/pull/3205
- Fix GitHub coverage workflow by @HalidOdat in https://github.com/boa-dev/boa/pull/3288
- Fix tagged template `this` in strict mode by @HalidOdat in https://github.com/boa-dev/boa/pull/3307
- fix: add 'static lifetime by @mattsse in https://github.com/boa-dev/boa/pull/3297
- Fix class inherit from `null` by @HalidOdat in https://github.com/boa-dev/boa/pull/3312
- Fix anonymous function name in cover assignment by @raskad in https://github.com/boa-dev/boa/pull/3325
- Add `NonMaxU32` as integer variant for `PropertyKey` by @raskad in https://github.com/boa-dev/boa/pull/3321
- Add missing class name binding by @raskad in https://github.com/boa-dev/boa/pull/3328
- Truncate environment stack on non-caught native error by @HalidOdat in https://github.com/boa-dev/boa/pull/3331
- Fix regular expression construction by @HalidOdat in https://github.com/boa-dev/boa/pull/3338
- Fix `super()` construction with default parameters by @HalidOdat in https://github.com/boa-dev/boa/pull/3339
- Fix static class element evaluation order by @raskad in https://github.com/boa-dev/boa/pull/3327
- Fix detection of runtime limits for accessors by @jedel1043 in https://github.com/boa-dev/boa/pull/3335
- Fix `Number.prototype.toFixed()` by @HalidOdat in https://github.com/boa-dev/boa/pull/2898
- Check `eval` realm before call by @HalidOdat in https://github.com/boa-dev/boa/pull/3375
- Evaluate all parts of `class` in strict mode by @HalidOdat in https://github.com/boa-dev/boa/pull/3383
- Fix var declaration for deleted binding locator by @raskad in https://github.com/boa-dev/boa/pull/3387
- Fix await flag in class constructor by @raskad in https://github.com/boa-dev/boa/pull/3388
- Fix compilation for targets without `AtomicU64` by @jedel1043 in https://github.com/boa-dev/boa/pull/3399
- Update `regex.match` spec and code by @raskad in https://github.com/boa-dev/boa/pull/3462
- `Context` independent `CodeBlock`s by @HalidOdat in https://github.com/boa-dev/boa/pull/3424
- Fix a Parser Idempotency Issue by @veera-sivarajan in https://github.com/boa-dev/boa/pull/3172
- Non recursive gc trace by @HalidOdat in https://github.com/boa-dev/boa/pull/3508
- Fix invalid return value when closing an iterator by @raskad in https://github.com/boa-dev/boa/pull/3567
- Implement Date parsing according to the spec by @raskad in https://github.com/boa-dev/boa/pull/3564
- `Date` refactor by @raskad in https://github.com/boa-dev/boa/pull/3595
- Fix regexp `toString` method by @raskad in https://github.com/boa-dev/boa/pull/3608
- Fix escaping in `RegExp.prototype.source` by @raskad in https://github.com/boa-dev/boa/pull/3619
- Fix line terminators in template strings by @raskad in https://github.com/boa-dev/boa/pull/3641
- Consider strict + no-strict tests as a single test by @jedel1043 in https://github.com/boa-dev/boa/pull/3675
- Preserve `.exe` suffix for Windows releases by @HalidOdat in https://github.com/boa-dev/boa/pull/3680

### Internal Improvements

- Move `RefCell` of `CompileTimeEnvironment`s to field `bindings` by @HalidOdat in https://github.com/boa-dev/boa/pull/3108
- Change `name` field type in `CodeBlock` to `JsString` by @HalidOdat in https://github.com/boa-dev/boa/pull/3107
- Refactor `Array.prototype.find*` and TypedArray variants to use `FindViaPredicate` by @dirkdev98 in https://github.com/boa-dev/boa/pull/3134
- Fix 1.71.0 lints by @RageKnify in https://github.com/boa-dev/boa/pull/3140
- Clippy updates: add panics and etc. by @nekevss in https://github.com/boa-dev/boa/pull/3235
- Remove unused class environments by @raskad in https://github.com/boa-dev/boa/pull/3332
- Improve highlighter performance by @jedel1043 in https://github.com/boa-dev/boa/pull/3341
- Cleanup `get_option` and calls to the function by @jedel1043 in https://github.com/boa-dev/boa/pull/3355
- Fix new lints for Rust 1.73 by @jedel1043 in https://github.com/boa-dev/boa/pull/3361
- Refactor compile time environment handling by @raskad in https://github.com/boa-dev/boa/pull/3365
- Update all dependencies by @jedel1043 in https://github.com/boa-dev/boa/pull/3400
- Optimize `shift` for dense arrays by @jedel1043 in https://github.com/boa-dev/boa/pull/3405
- Disallow changing type of already created objects by @jedel1043 in https://github.com/boa-dev/boa/pull/3410
- Merge `CodeBlock` constant pools by @HalidOdat in https://github.com/boa-dev/boa/pull/3413
- Move ordinary function `[[ConstructorKind]]` to `CodeBlock` by @HalidOdat in https://github.com/boa-dev/boa/pull/3439
- Move `FunctionKind` to `CodeBlock` by @HalidOdat in https://github.com/boa-dev/boa/pull/3440
- Unify generator and ordinary function creation by @HalidOdat in https://github.com/boa-dev/boa/pull/3441
- Move `arguments` object creation to bytecode by @HalidOdat in https://github.com/boa-dev/boa/pull/3432
- Move parameter environment creation to bytecode by @HalidOdat in https://github.com/boa-dev/boa/pull/3433
- Prevent `DefVar` opcode emit for global binding by @HalidOdat in https://github.com/boa-dev/boa/pull/3453
- Transition `Intl` types to `NativeObject` API by @jedel1043 in https://github.com/boa-dev/boa/pull/3491
- Reduce `WeakGc<T>` memory usage by @HalidOdat in https://github.com/boa-dev/boa/pull/3492
- Migrate `Temporal` to its own crate. by @nekevss in https://github.com/boa-dev/boa/pull/3461
- Reestructure repo and CI improvements by @jedel1043 in https://github.com/boa-dev/boa/pull/3505
- Move `PromiseCapability` to stack by @HalidOdat in https://github.com/boa-dev/boa/pull/3528
- Fix rust 1.75 lints by @raskad in https://github.com/boa-dev/boa/pull/3540
- Remove double indirection in module types by @jedel1043 in https://github.com/boa-dev/boa/pull/3640
- Fix clippy warnings for rustc 1.76 by @jedel1043 in https://github.com/boa-dev/boa/pull/3668
- Migrate to `temporal_rs` crate by @nekevss in https://github.com/boa-dev/boa/pull/3694

### Other Changes

- Removed time 0.1 dependency, updated dependencies by @Razican in https://github.com/boa-dev/boa/pull/3122
- Add new CLI options to usage in README by @Razican in https://github.com/boa-dev/boa/pull/3123
- Find roots when running GC rather than runtime by @tunz in https://github.com/boa-dev/boa/pull/3109
- Re-enable must_use clippy rule by @tunz in https://github.com/boa-dev/boa/pull/3180
- Refactor environment, exception handling and jumping in VM by @HalidOdat in https://github.com/boa-dev/boa/pull/3059
- Refactor `Context::run()` method by @HalidOdat in https://github.com/boa-dev/boa/pull/3179
- Added examples by @postmeback in https://github.com/boa-dev/boa/pull/3141
- Use main stack for calling ordinary functions by @HalidOdat in https://github.com/boa-dev/boa/pull/3185
- Update license field following SPDX 2.1 license expression standard by @frisoft in https://github.com/boa-dev/boa/pull/3209
- Store active runnable and active function in `CallFrame` by @HalidOdat in https://github.com/boa-dev/boa/pull/3197
- Added MSRV check by @Razican in https://github.com/boa-dev/boa/pull/3291
- Reintroduce publish CI job by @jedel1043 in https://github.com/boa-dev/boa/pull/3308
- Format code snippets in docs by @jedel1043 in https://github.com/boa-dev/boa/pull/3317
- Remove direct conversion from `&str` to `JsValue`/`PropertyKey`. by @jedel1043 in https://github.com/boa-dev/boa/pull/3319
- `icu_properties` default features to true by @nekevss in https://github.com/boa-dev/boa/pull/3326
- Varying length instruction operands by @HalidOdat in https://github.com/boa-dev/boa/pull/3253
- Improve CI testing by @jedel1043 in https://github.com/boa-dev/boa/pull/3333
- Refactor function internal methods by @HalidOdat in https://github.com/boa-dev/boa/pull/3322
- Make environments opcodes use varying operands by @HalidOdat in https://github.com/boa-dev/boa/pull/3340
- Bump test262 by @jedel1043 in https://github.com/boa-dev/boa/pull/3349
- Refactor ordinary VM calling by @HalidOdat in https://github.com/boa-dev/boa/pull/3295
- Fix Array.join when the array contains itself by @ahaoboy in https://github.com/boa-dev/boa/pull/3406
- Rename master workflow to main by @Razican in https://github.com/boa-dev/boa/pull/3409
- Cleaned up a couple of Github action warnings by @Razican in https://github.com/boa-dev/boa/pull/3417
- Temporal duration update and cleanup by @nekevss in https://github.com/boa-dev/boa/pull/3443
- Progress on Duration's round/total method updates by @nekevss in https://github.com/boa-dev/boa/pull/3451
- Simplify all extensions APIs of `Context` by @jedel1043 in https://github.com/boa-dev/boa/pull/3456
- `[[HostDefined]]` Improvements by @johnyob in https://github.com/boa-dev/boa/pull/3460
- Make well_known_symbols functions pub by @tj825 in https://github.com/boa-dev/boa/pull/3465
- Use `Vec<T>` for keeping track of gc objects by @HalidOdat in https://github.com/boa-dev/boa/pull/3493
- Implement `Inline Caching` by @HalidOdat in https://github.com/boa-dev/boa/pull/2767
- Migrate `ISO8601` parsing to `boa_temporal` by @nekevss in https://github.com/boa-dev/boa/pull/3500
- Implement erased objects by @jedel1043 in https://github.com/boa-dev/boa/pull/3494
- Build out ZonedDateTime, TimeZone, and Instant by @nekevss in https://github.com/boa-dev/boa/pull/3497
- `boa_temporal` structure changes and docs update by @nekevss in https://github.com/boa-dev/boa/pull/3504
- Refactor vm calling convention to allow locals by @HalidOdat in https://github.com/boa-dev/boa/pull/3496
- Temporal Parser Cleanup/Fixes by @nekevss in https://github.com/boa-dev/boa/pull/3521
- Refactor Temporal Calendar API for `AnyCalendar` and fields by @nekevss in https://github.com/boa-dev/boa/pull/3522
- Update `boa_temporal` Time Zone design by @nekevss in https://github.com/boa-dev/boa/pull/3543
- Implement `DifferenceInstant` and related refactor by @nekevss in https://github.com/boa-dev/boa/pull/3568
- Run `cargo update` on fuzz crate by @jedel1043 in https://github.com/boa-dev/boa/pull/3607
- Temporal `Instant` migration cont. and related changes by @nekevss in https://github.com/boa-dev/boa/pull/3601
- Temporal: Update `Date` builtin with `boa_temporal` and fixes by @nekevss in https://github.com/boa-dev/boa/pull/3614
- Temporal: Build out `Time` and its methods by @nekevss in https://github.com/boa-dev/boa/pull/3613
- Temporal: Enable temporal tests by @nekevss in https://github.com/boa-dev/boa/pull/3620
- Fix tests results upload by @raskad in https://github.com/boa-dev/boa/pull/3635
- Temporal: `DateTime` and `PlainDateTime` functionality by @nekevss in https://github.com/boa-dev/boa/pull/3628
- Temporal: Initial `PlainTime` build out by @nekevss in https://github.com/boa-dev/boa/pull/3621
- Ignore `Cargo.lock` in fuzzer by @jedel1043 in https://github.com/boa-dev/boa/pull/3636
- Temporal: attribute/property and custom calendar fixes by @nekevss in https://github.com/boa-dev/boa/pull/3639
- Docs: Update boa's main README.md by @nekevss in https://github.com/boa-dev/boa/pull/3650
- Bump time from 0.3.31 to 0.3.33 by @jedel1043 in https://github.com/boa-dev/boa/pull/3652
- Temporal: Refactor Calendar protocol for `JsObject`s by @nekevss in https://github.com/boa-dev/boa/pull/3651
- Simplify Temporal APIs by @jedel1043 in https://github.com/boa-dev/boa/pull/3653
- Implement inline caching tests and cleanup by @HalidOdat in https://github.com/boa-dev/boa/pull/3513
- Docs: Update README.md and add `boa_cli`'s README.md by @nekevss in https://github.com/boa-dev/boa/pull/3659
- Change `HostEnsureCanCompileStrings` to the new spec by @jedel1043 in https://github.com/boa-dev/boa/pull/3690
- Split ICU4X data generation from `boa_icu_provider` by @jedel1043 in https://github.com/boa-dev/boa/pull/3682
- Add a catch all for other categories not labelled by @jasonwilliams in https://github.com/boa-dev/boa/pull/3703
- Fix `temporal_rs` in Cargo.toml by @nekevss in https://github.com/boa-dev/boa/pull/3702

## New Contributors

- @AlvinKuruvilla made their first contribution in https://github.com/boa-dev/boa/pull/3129
- @tunz made their first contribution in https://github.com/boa-dev/boa/pull/3109
- @postmeback made their first contribution in https://github.com/boa-dev/boa/pull/3092
- @kelbazz made their first contribution in https://github.com/boa-dev/boa/pull/3193
- @frisoft made their first contribution in https://github.com/boa-dev/boa/pull/3209
- @mattsse made their first contribution in https://github.com/boa-dev/boa/pull/3297
- @arexon made their first contribution in https://github.com/boa-dev/boa/pull/3381
- @johnyob made their first contribution in https://github.com/boa-dev/boa/pull/3369
- @ahaoboy made their first contribution in https://github.com/boa-dev/boa/pull/3406
- @tj825 made their first contribution in https://github.com/boa-dev/boa/pull/3465
- @AngeloChecked made their first contribution in https://github.com/boa-dev/boa/pull/3481

**Full Changelog**: https://github.com/boa-dev/boa/compare/v0.17...v0.18

## [0.17.0 (2023-07-05)](https://github.com/boa-dev/boa/compare/v0.16...v0.17)

### Feature Enhancements

- Implement `new.target` expression by @raskad in [#2299](https://github.com/boa-dev/boa/pull/2299)
- Parse static async private methods in classes by @raskad in [#2315](https://github.com/boa-dev/boa/pull/2315)
- Implement `JsDataView` by @nekevss in [#2308](https://github.com/boa-dev/boa/pull/2308)
- Upgrade clap to 4.0, add value hints for zsh and fish by @Razican in [#2336](https://github.com/boa-dev/boa/pull/2336)
- Implement `JsRegExp` by @nekevss in [#2326](https://github.com/boa-dev/boa/pull/2326)
- Create new lazy Error type by @jedel1043 in [#2283](https://github.com/boa-dev/boa/pull/2283)
- Fixed some documentation and clippy warnings in tests by @Razican in [#2362](https://github.com/boa-dev/boa/pull/2362)
- Removed the "VM Implementation" headline for Test262 by @Razican in [#2364](https://github.com/boa-dev/boa/pull/2364)
- Modified the `loadfile` example to show how Boa can read bytes by @Razican in [#2363](https://github.com/boa-dev/boa/pull/2363)
- Implement `LabelledStatement` by @jedel1043 in [#2349](https://github.com/boa-dev/boa/pull/2349)
- Split vm/opcode into modules by @nekevss in [#2343](https://github.com/boa-dev/boa/pull/2343)
- Removed some duplicate code, added `ToIndentedString` by @Razican in [#2367](https://github.com/boa-dev/boa/pull/2367)
- Document the AST by @jedel1043 in [#2377](https://github.com/boa-dev/boa/pull/2377)
- Implement member accessors in initializer of for loops by @jedel1043 in [#2381](https://github.com/boa-dev/boa/pull/2381)
- Implement `JsGenerator` and wrapper docs clean up by @nekevss in [#2380](https://github.com/boa-dev/boa/pull/2380)
- Add named evaluation of logical assignments by @raskad in [#2389](https://github.com/boa-dev/boa/pull/2389)
- Implement optional chains by @jedel1043 in [#2390](https://github.com/boa-dev/boa/pull/2390)
- Implement delete for references by @jedel1043 in [#2395](https://github.com/boa-dev/boa/pull/2395)
- Implement AST Visitor pattern (attempt #3) by @addisoncrump in [#2392](https://github.com/boa-dev/boa/pull/2392)
- Implement async arrow functions by @raskad in [#2393](https://github.com/boa-dev/boa/pull/2393)
- Pretty print promise objects by @jedel1043 in [#2407](https://github.com/boa-dev/boa/pull/2407)
- Parser Idempotency Fuzzer by @addisoncrump in [#2400](https://github.com/boa-dev/boa/pull/2400)
- Safe wrapper for `JsDate` by @anuvratsingh in [#2181](https://github.com/boa-dev/boa/pull/2181)
- Fix some Date tests by @jedel1043 in [#2431](https://github.com/boa-dev/boa/pull/2431)
- Boa Gc implementation draft by @nekevss in [#2394](https://github.com/boa-dev/boa/pull/2394)
- VM Fuzzer by @addisoncrump in [#2401](https://github.com/boa-dev/boa/pull/2401)
- Implement the `WeakRef` builtin by @jedel1043 in [#2438](https://github.com/boa-dev/boa/pull/2438)
- Refactor the `Date` builtin by @jedel1043 in [#2449](https://github.com/boa-dev/boa/pull/2449)
- Implement instruction flowgraph generator by @HalidOdat in [#2422](https://github.com/boa-dev/boa/pull/2422)
- `JsArrayBuffer` take method and docs by @nekevss in [#2454](https://github.com/boa-dev/boa/pull/2454)
- Set function names in object literal methods by @raskad in [#2460](https://github.com/boa-dev/boa/pull/2460)
- Redesign Intl API and implement some services by @jedel1043 in [#2478](https://github.com/boa-dev/boa/pull/2478)
- Cleanup `Context` APIs by @jedel1043 in [#2504](https://github.com/boa-dev/boa/pull/2504)
- Prepare `Promises` for new host hooks and job queue API by @jedel1043 in [#2528](https://github.com/boa-dev/boa/pull/2528)
- Implement host hooks and job queues APIs by @jedel1043 in [#2529](https://github.com/boa-dev/boa/pull/2529)
- First batch of `no_std` support for some sub-crates by @jedel1043 in [#2544](https://github.com/boa-dev/boa/pull/2544)
- Create `Source` to abstract JS code sources by @jedel1043 in [#2579](https://github.com/boa-dev/boa/pull/2579)
- Move increment and decrement operations to `Update` expression by @raskad in [#2565](https://github.com/boa-dev/boa/pull/2565)
- Implement binary `in` operation with private names by @raskad in [#2582](https://github.com/boa-dev/boa/pull/2582)
- Module parsing by @Razican in [#2411](https://github.com/boa-dev/boa/pull/2411)
- Implement `WeakSet` by @lupd in [#2586](https://github.com/boa-dev/boa/pull/2586)
- Implement `WeakMap` by @raskad in [#2597](https://github.com/boa-dev/boa/pull/2597)
- API to construct a `NativeFunction` from a native async function by @jedel1043 in [#2542](https://github.com/boa-dev/boa/pull/2542)
- Add `--strict` flag to cli by @HalidOdat in [#2689](https://github.com/boa-dev/boa/pull/2689)
- Add timeout to CI by @HalidOdat in [#2691](https://github.com/boa-dev/boa/pull/2691)
- Add ES5 and ES6 Conformance calculation to boa_tester by @ZackMitkin in [#2690](https://github.com/boa-dev/boa/pull/2690)
- Improve tester display for multiple editions by @jedel1043 in [#2720](https://github.com/boa-dev/boa/pull/2720)
- Implement `JsPromise` wrapper by @jedel1043 in [#2758](https://github.com/boa-dev/boa/pull/2758)
- Initial version of a JS -> Rust conversion trait. by @Razican in [#2276](https://github.com/boa-dev/boa/pull/2276)
- Implement `escape` and `unescape` by @jedel1043 in [#2768](https://github.com/boa-dev/boa/pull/2768)
- Implement debug object for CLI by @HalidOdat in [#2772](https://github.com/boa-dev/boa/pull/2772)
- Make `Realm` shareable between functions by @jedel1043 in [#2801](https://github.com/boa-dev/boa/pull/2801)
- Implement Annex-B string html methods by @HalidOdat in [#2798](https://github.com/boa-dev/boa/pull/2798)
- Implement annex-b `trimLeft` and `trimRight` string methods by @HalidOdat in [#2806](https://github.com/boa-dev/boa/pull/2806)
- Implement HTML comments and gate behind the `annex-b` feature by @jedel1043 in [#2817](https://github.com/boa-dev/boa/pull/2817)
- Implement `Intl.Segmenter` by @jedel1043 in [#2840](https://github.com/boa-dev/boa/pull/2840)
- Implement var initializers in for-in loops by @jedel1043 in [#2842](https://github.com/boa-dev/boa/pull/2842)
- Improve debug output of `JsNativeError` and `Realm` by @jedel1043 in [#2894](https://github.com/boa-dev/boa/pull/2894)
- Implement runtime limits for loops by @HalidOdat in [#2857](https://github.com/boa-dev/boa/pull/2857)
- Implement runtime limits for recursion by @HalidOdat in [#2904](https://github.com/boa-dev/boa/pull/2904)
- Implement annexB Block-Level Function Declarations by @raskad in [#2910](https://github.com/boa-dev/boa/pull/2910)
- Implement module execution by @jedel1043 in [#2922](https://github.com/boa-dev/boa/pull/2922)
- Type safe root shape by @HalidOdat in [#2940](https://github.com/boa-dev/boa/pull/2940)
- Implement dynamic imports by @jedel1043 in [#2932](https://github.com/boa-dev/boa/pull/2932)
- Implement pseudo-property `import.meta` by @jedel1043 in [#2956](https://github.com/boa-dev/boa/pull/2956)
- Implement `with` and object environments by @raskad in [#2692](https://github.com/boa-dev/boa/pull/2692)
- Add hooks to get the current time and timezone by @jedel1043 in [#2824](https://github.com/boa-dev/boa/pull/2824)
- Make `JsSymbol` thread-safe by @jedel1043 in [#2539](https://github.com/boa-dev/boa/pull/2539)
- Added a Boa runtime by @Razican in [#2743](https://github.com/boa-dev/boa/pull/2743)
- Implement `TryFromJs` for `JsObject` wrappers by @Razican in [#2809](https://github.com/boa-dev/boa/pull/2809)
- Allow passing owned `HostHooks` and `JobQueues` to `Context` by @jedel1043 in [#2811](https://github.com/boa-dev/boa/pull/2811)
- Implement `String.prototype.toLocaleUpper/LowerCase` by @jedel1043 in [#2822](https://github.com/boa-dev/boa/pull/2822)
- Implement constant folding optimization by @HalidOdat in [#2679](https://github.com/boa-dev/boa/pull/2679)
- Implement `Hidden classes` by @HalidOdat in [#2723](https://github.com/boa-dev/boa/pull/2723)
- show object kind, name and address when using dbg! by @jasonwilliams in [#2960](https://github.com/boa-dev/boa/pull/2960)
- Add convenience methods to `ModuleLoader` by @jedel1043 in [#3007](https://github.com/boa-dev/boa/pull/3007)
- Allow `JobQueue` to concurrently run jobs by @jedel1043 in [#3036](https://github.com/boa-dev/boa/pull/3036)
- Make `IntegerIndexed::byte_offset` public by @CryZe in [#3017](https://github.com/boa-dev/boa/pull/3017)
- Allow awaiting `JsPromise` from Rust code by @jedel1043 in [#3011](https://github.com/boa-dev/boa/pull/3011)
- Cache `cargo-tarpaulin` binary by @jedel1043 in [#3071](https://github.com/boa-dev/boa/pull/3071)
- add link to the main logo by @jasonwilliams in [#3082](https://github.com/boa-dev/boa/pull/3082)

### Bug Fixes

- Add unicode terminator to line comment by @creampnx-x in [#2301](https://github.com/boa-dev/boa/pull/2301)
- Fix function property order by @raskad in [#2305](https://github.com/boa-dev/boa/pull/2305)
- Fix some Array spec deviations by @raskad in [#2306](https://github.com/boa-dev/boa/pull/2306)
- Fix double conversion to primitive in `ToNumeric` by @raskad in [#2310](https://github.com/boa-dev/boa/pull/2310)
- Fixing the output for the test diffs in PRs by @Razican in [#2320](https://github.com/boa-dev/boa/pull/2320)
- Fix Regex literal parsing in MemberExpression by @tunz in [#2328](https://github.com/boa-dev/boa/pull/2328)
- Fix error in `Proxy` set implementation by @raskad in [#2369](https://github.com/boa-dev/boa/pull/2369)
- Allow LineTerminator before Semicolon in `continue` by @raskad in [#2371](https://github.com/boa-dev/boa/pull/2371)
- Fix var collisions in strict eval calls by @jedel1043 in [#2382](https://github.com/boa-dev/boa/pull/2382)
- Set `in` to `true` when parsing AssignmentExpression in ConditionalExpression by @raskad in [#2386](https://github.com/boa-dev/boa/pull/2386)
- Skip prototype field definition for arrow function by @raskad in [#2388](https://github.com/boa-dev/boa/pull/2388)
- Remove invalid optimization in addition by @raskad in [#2387](https://github.com/boa-dev/boa/pull/2387)
- Fix order dependent execution in assignment. by @HalidOdat in [#2378](https://github.com/boa-dev/boa/pull/2378)
- Add early error for `yield` in `GeneratorExpression` parameters by @raskad in [#2413](https://github.com/boa-dev/boa/pull/2413)
- Handle `__proto__` fields in object literals by @raskad in [#2423](https://github.com/boa-dev/boa/pull/2423)
- Fix built-ins/Array/prototype/toString/non-callable-join-string-tag.js test case by @akavi in [#2458](https://github.com/boa-dev/boa/pull/2458)
- Fix `PartialEq` for `JsBigInt` and `f64` by @raskad in [#2461](https://github.com/boa-dev/boa/pull/2461)
- Allow class expressions without identifier by @raskad in [#2464](https://github.com/boa-dev/boa/pull/2464)
- Fix to weak_trace for `boa_tester` by @nekevss in [#2470](https://github.com/boa-dev/boa/pull/2470)
- Fix unary operations on `this` by @veera-sivarajan in [#2507](https://github.com/boa-dev/boa/pull/2507)
- Fix postfix operator line terminator parsing by @raskad in [#2520](https://github.com/boa-dev/boa/pull/2520)
- Remove `Literal::Undefined` by @veera-sivarajan in [#2518](https://github.com/boa-dev/boa/pull/2518)
- Add early errors for 'eval' or 'arguments' in parameters by @raskad in [#2515](https://github.com/boa-dev/boa/pull/2515)
- Pass a receiver value in property getter opcodes by @raskad in [#2516](https://github.com/boa-dev/boa/pull/2516)
- Add regex literal early errors by @raskad in [#2517](https://github.com/boa-dev/boa/pull/2517)
- `Break` Opcode and `ByteCompiler` changes by @nekevss in [#2523](https://github.com/boa-dev/boa/pull/2523)
- Refactor some class features by @raskad in [#2513](https://github.com/boa-dev/boa/pull/2513)
- Recognize Directive Prologues correctly by @raskad in [#2521](https://github.com/boa-dev/boa/pull/2521)
- Correctly parse consecutive semicolons by @raskad in [#2533](https://github.com/boa-dev/boa/pull/2533)
- Fix some HoistableDeclaration parsing errors by @raskad in [#2532](https://github.com/boa-dev/boa/pull/2532)
- Return the correct value from a statement list by @raskad in [#2554](https://github.com/boa-dev/boa/pull/2554)
- Fix error for static class methods named `prototype` by @raskad in [#2552](https://github.com/boa-dev/boa/pull/2552)
- Avoid creating `prototype` property on methods by @raskad in [#2553](https://github.com/boa-dev/boa/pull/2553)
- Fix double property access on assignment ops by @raskad in [#2551](https://github.com/boa-dev/boa/pull/2551)
- Add early errors for escaped identifiers by @raskad in [#2546](https://github.com/boa-dev/boa/pull/2546)
- Fix failing collator tests by @jedel1043 in [#2575](https://github.com/boa-dev/boa/pull/2575)
- fuzzer: bubble up NoInstructionsRemain error instead of trying to handle as exception by @Mrmaxmeier in [#2566](https://github.com/boa-dev/boa/pull/2566)
- Try-catch-block control flow fix/refactor by @nekevss in [#2568](https://github.com/boa-dev/boa/pull/2568)
- Fix doc tests and add CI check by @jedel1043 in [#2606](https://github.com/boa-dev/boa/pull/2606)
- Fix string to number conversion for `infinity` by @raskad in [#2607](https://github.com/boa-dev/boa/pull/2607)
- Fix exponent operator by @HalidOdat in [#2681](https://github.com/boa-dev/boa/pull/2681)
- Update `README.md` cli options by @HalidOdat in [#2678](https://github.com/boa-dev/boa/pull/2678)
- Fix incorrect `Number.MIN_VALUE` value by @HalidOdat in [#2682](https://github.com/boa-dev/boa/pull/2682)
- Correctly run async tests by @jedel1043 in [#2683](https://github.com/boa-dev/boa/pull/2683)
- Fix value to bigint conversion by @HalidOdat in [#2688](https://github.com/boa-dev/boa/pull/2688)
- Fix Object constructor by @raskad in [#2694](https://github.com/boa-dev/boa/pull/2694)
- Fix get function opcode traces by @HalidOdat in [#2708](https://github.com/boa-dev/boa/pull/2708)
- Add early errors to dynamic function constructors by @raskad in [#2716](https://github.com/boa-dev/boa/pull/2716)
- Add negative zero handling for `Map.delete` by @raskad in [#2726](https://github.com/boa-dev/boa/pull/2726)
- Fix remaining `Set` tests by @raskad in [#2725](https://github.com/boa-dev/boa/pull/2725)
- Fix update expressions getting values multiple times by @raskad in [#2733](https://github.com/boa-dev/boa/pull/2733)
- Make if statements return their completion values by @raskad in [#2739](https://github.com/boa-dev/boa/pull/2739)
- Fix super call execution order by @raskad in [#2724](https://github.com/boa-dev/boa/pull/2724)
- Fix deserialization of `SpecEdition` by @jedel1043 in [#2762](https://github.com/boa-dev/boa/pull/2762)
- Add `json-parse-with-source` feature to `boa_tester` by @HalidOdat in [#2778](https://github.com/boa-dev/boa/pull/2778)
- Fix `Symbol.prototype[@@iterator]` by @HalidOdat in [#2800](https://github.com/boa-dev/boa/pull/2800)
- Fix `String.prototype.replace()` order of `ToString` execution by @HalidOdat in [#2799](https://github.com/boa-dev/boa/pull/2799)
- Fix `ThrowTypeError` intrinsic by @HalidOdat in [#2797](https://github.com/boa-dev/boa/pull/2797)
- Fix `String.prototype.substr()` by @HalidOdat in [#2805](https://github.com/boa-dev/boa/pull/2805)
- Fix destructive for-of loop assignments by @raskad in [#2803](https://github.com/boa-dev/boa/pull/2803)
- Fix `TypedArray`s minus zero key by @HalidOdat in [#2808](https://github.com/boa-dev/boa/pull/2808)
- Fix sync generator yield expressions by @raskad in [#2838](https://github.com/boa-dev/boa/pull/2838)
- Fix async generators by @raskad in [#2853](https://github.com/boa-dev/boa/pull/2853)
- Catch 'eval' and 'arguments' in setter method parameter by @raskad in [#2858](https://github.com/boa-dev/boa/pull/2858)
- Fix `PropertyKey` index parse by @HalidOdat in [#2843](https://github.com/boa-dev/boa/pull/2843)
- Fix `Date.prototype[Symbol.primitive]` incorrect attributes by @HalidOdat in [#2862](https://github.com/boa-dev/boa/pull/2862)
- Allow `Date` object to store invalid `NativeDateTime` by @HalidOdat in [#2861](https://github.com/boa-dev/boa/pull/2861)
- Fix panic when calling toString with radix by @HalidOdat in [#2863](https://github.com/boa-dev/boa/pull/2863)
- Fix incorrect `LoopContinue` instruction in while-do loops by @HalidOdat in [#2866](https://github.com/boa-dev/boa/pull/2866)
- Initialize `var` bindings in runtime environments with `undefined` by @raskad in [#2860](https://github.com/boa-dev/boa/pull/2860)
- Bugfix/new.target is not understood by the parser as an expression #2793 by @projectnoa in [#2878](https://github.com/boa-dev/boa/pull/2878)
- Fix `RegExp` constructor return value when pattern is a regexp by @HalidOdat in [#2880](https://github.com/boa-dev/boa/pull/2880)
- `RegExp` constructor should call `IsRegExp()` by @HalidOdat in [#2881](https://github.com/boa-dev/boa/pull/2881)
- Fix `for-of` expression parsing by @HalidOdat in [#2882](https://github.com/boa-dev/boa/pull/2882)
- Disallow strict directives with escaped sequences by @jedel1043 in [#2892](https://github.com/boa-dev/boa/pull/2892)
- Make `typeof` throw when accessing uninitialized variables by @raskad in [#2902](https://github.com/boa-dev/boa/pull/2902)
- Fix wrong name of `Function.prototype[Symbol.hasInstance]` by @raskad in [#2905](https://github.com/boa-dev/boa/pull/2905)
- Fix remaining object literal tests by @raskad in [#2906](https://github.com/boa-dev/boa/pull/2906)
- Add SyntaxErrors in GlobalDeclarationInstantiation by @raskad in [#2908](https://github.com/boa-dev/boa/pull/2908)
- Fix switch `default` execution by @HalidOdat in [#2907](https://github.com/boa-dev/boa/pull/2907)
- Add loop and switch return values by @raskad in [#2828](https://github.com/boa-dev/boa/pull/2828)
- Allow escaped `let` as expression by @HalidOdat in [#2916](https://github.com/boa-dev/boa/pull/2916)
- Allow `let` name in for-in loop in non-strict mode by @HalidOdat in [#2915](https://github.com/boa-dev/boa/pull/2915)
- Fix lexical environments in for loops by @raskad in [#2917](https://github.com/boa-dev/boa/pull/2917)
- Fix `GetSubstitution` by @HalidOdat in [#2933](https://github.com/boa-dev/boa/pull/2933)
- Allow escaped `async` as binding name by @jedel1043 in [#2936](https://github.com/boa-dev/boa/pull/2936)
- Fix tagged template creation by @raskad in [#2925](https://github.com/boa-dev/boa/pull/2925)
- Implement Private Runtime Environments by @raskad in [#2929](https://github.com/boa-dev/boa/pull/2929)
- Fix remaining ES5 `built-ins/RegExp` tests by @HalidOdat in [#2957](https://github.com/boa-dev/boa/pull/2957)
- Fix remaining static module bugs by @jedel1043 in [#2955](https://github.com/boa-dev/boa/pull/2955)
- Deny Unicode Escapes in boolean and null expressions by @veera-sivarajan in [#2931](https://github.com/boa-dev/boa/pull/2931)
- Fix `Date` for dynamic timezones by @jedel1043 in [#2877](https://github.com/boa-dev/boa/pull/2877)
- Fix ES5 selector by @veera-sivaraja in [#2924](https://github.com/boa-dev/boa/pull/2924)
- Labelled ByteCompiler Fix by @nekevss in [#2534](https://github.com/boa-dev/boa/pull/2534)
- Fix verbose test display by @jedel1043 in [#2731](https://github.com/boa-dev/boa/pull/2731)
- Fix WASM playground by @jedel1043 in [#2992](https://github.com/boa-dev/boa/pull/2992)
- Correctly initialize functions inside modules by @jedel1043 in [#2993](https://github.com/boa-dev/boa/pull/2993)
- Allow `true`, `false` and `null` in object patterns by @jedel1043 in [#2994](https://github.com/boa-dev/boa/pull/2994)
- Fix panic in optional expressions with private identifiers by @raskad in [#2995](https://github.com/boa-dev/boa/pull/2995)
- Fix prompt on windows by @ShaneEverittM in [#2986](https://github.com/boa-dev/boa/pull/2986)
- Fix panic in constructor call by @raskad in [#3001](https://github.com/boa-dev/boa/pull/3001)
- Unify async iterators and iterators compilation by @jedel1043 in [#2976](https://github.com/boa-dev/boa/pull/2976)
- Correctly parse `yield import(..)` expressions by @jedel1043 in [#3006](https://github.com/boa-dev/boa/pull/3006)
- Return the correct value during a labelled break by @raskad in [#2996](https://github.com/boa-dev/boa/pull/2996)
- Fix panics on empty return values by @raskad in [#3018](https://github.com/boa-dev/boa/pull/3018)
- Add early error for `await` in class static blocks by @raskad in [#3019](https://github.com/boa-dev/boa/pull/3019)
- Fix class constructor return value by @raskad in [#3028](https://github.com/boa-dev/boa/pull/3028)
- Fix super property access by @raskad in [#3026](https://github.com/boa-dev/boa/pull/3026)
- Skip reversing arguments in SuperCallDerived by @dirkdev98 in [#3062](https://github.com/boa-dev/boa/pull/3062)
- Mark header of rooted ephemerons when tracing by @jedel1043 in [#3049](https://github.com/boa-dev/boa/pull/3049)
- Copy `ABOUT.md` file to all published crates by @jedel1043 in [#3074](https://github.com/boa-dev/boa/pull/3074)
- Correctly handle finally..loop..break by @dirkdev98 in [#3073](https://github.com/boa-dev/boa/pull/3073)

### Internal Improvements

- Direct conversion from `u8` to `Opcode` by @HalidOdat [#2951](https://github.com/boa-dev/boa/pull/2951)
- Fix links in readme by @raskad in [#2304](https://github.com/boa-dev/boa/pull/2304)
- Switch to workspace inherited properties by @jedel1043 in [#2297](https://github.com/boa-dev/boa/pull/2297)
- Separate JsObjectType implementors to their own module by @CalliEve in [#2324](https://github.com/boa-dev/boa/pull/2324)
- First prototype for new `JsString` using UTF-16 by @jedel1043 in [#1659](https://github.com/boa-dev/boa/pull/1659)
- Split `Node` into `Statement`, `Expression` and `Declaration` by @jedel1043 in [#2319](https://github.com/boa-dev/boa/pull/2319)
- Changes neccesary -> necessary by @nekevss in [#2370](https://github.com/boa-dev/boa/pull/2370)
- Cleanup and speed-up CI by @RageKnify in [#2376](https://github.com/boa-dev/boa/pull/2376)
- Reduce documentation size in blog by @jedel1043 in [#2383](https://github.com/boa-dev/boa/pull/2383)
- Generate `Opcode` impl using macro by @jedel1043 in [#2391](https://github.com/boa-dev/boa/pull/2391)
- Extract the ast to a crate by @jedel1043 in [#2402](https://github.com/boa-dev/boa/pull/2402)
- Replace `contains` and friends with visitors by @jedel1043 in [#2403](https://github.com/boa-dev/boa/pull/2403)
- Rewrite some patterns with let-else and ok_or_else by @jedel1043 in [#2404](https://github.com/boa-dev/boa/pull/2404)
- Fix async tests result values by @jedel1043 in [#2406](https://github.com/boa-dev/boa/pull/2406)
- Rewrite scope analysis operations using visitors by @jedel1043 in [#2408](https://github.com/boa-dev/boa/pull/2408)
- Make `JsString` conform to miri tests by @jedel1043 in [#2412](https://github.com/boa-dev/boa/pull/2412)
- Reduced boilerplate code in the parser by @Razican in [#2410](https://github.com/boa-dev/boa/pull/2410)
- Extract the parser into a crate by @jedel1043 in [#2409](https://github.com/boa-dev/boa/pull/2409)
- Switch tarpaulin to llvm engine by @RageKnify in [#2432](https://github.com/boa-dev/boa/pull/2432)
- Cleanup `boa_tester` by @jedel1043 in [#2440](https://github.com/boa-dev/boa/pull/2440)
- Restructure lint lists in `boa_ast` by @raskad in [#2433](https://github.com/boa-dev/boa/pull/2433)
- Restructure lints in multiple crates by @raskad in [#2447](https://github.com/boa-dev/boa/pull/2447)
- Restructure lint lists in `boa_engine` by @raskad in [#2455](https://github.com/boa-dev/boa/pull/2455)
- Fix rust 1.66.0 lints by @raskad in [#2486](https://github.com/boa-dev/boa/pull/2486)
- Divide byte compiler by @e-codes-stuff in [#2425](https://github.com/boa-dev/boa/pull/2425)
- Cleanup inline annotations by @jedel1043 in [#2493](https://github.com/boa-dev/boa/pull/2493)
- [profiler] Cache StringId by @tunz in [#2495](https://github.com/boa-dev/boa/pull/2495)
- Improve identifier parsing by @jedel1043 in [#2581](https://github.com/boa-dev/boa/pull/2581)
- Remove Syntax Errors from Bytecompiler by @raskad in [#2598](https://github.com/boa-dev/boa/pull/2598)
- fix: RUSTSEC-2020-0071 in boa_engine by @hanabi1224 in [#2627](https://github.com/boa-dev/boa/pull/2627)
- Migrate tests to new test API by @jedel1043 in [#2619](https://github.com/boa-dev/boa/pull/2619)
- [regexp] new tests for unicode flag by @selfisekai in [#2656](https://github.com/boa-dev/boa/pull/2656)
- Handle surrogates in `String.fromCodePoint` by @jedel1043 in [#2659](https://github.com/boa-dev/boa/pull/2659)
- Bump Test262 and add new features by @jedel1043 in [#2729](https://github.com/boa-dev/boa/pull/2729)
- Fix cross-realm construction bugs by @jedel1043 in [#2786](https://github.com/boa-dev/boa/pull/2786)
- Lift `InternalObjectMethods` from `Object` by @jedel1043 in [#2790](https://github.com/boa-dev/boa/pull/2790)
- Implement async functions using generators by @jedel1043 in [#2821](https://github.com/boa-dev/boa/pull/2821)
- Improve strictness of `GeneratorState` by @jedel1043 in [#2837](https://github.com/boa-dev/boa/pull/2837)
- Upgraded to ICU 1.2 by @Razican in [#2826](https://github.com/boa-dev/boa/pull/2826)
- Fix setting properties inside `with` blocks by @jedel1043 in [#2847](https://github.com/boa-dev/boa/pull/2847)
- Create a unique `PromiseCapability` on each async function call by @jedel1043 in [#2846](https://github.com/boa-dev/boa/pull/2846)
- Refactor binding handling APIs by @jedel1043 in [#2870](https://github.com/boa-dev/boa/pull/2870)
- Refactor guards into a `ContextCleanupGuard` abstraction by @jedel1043 in [#2890](https://github.com/boa-dev/boa/pull/2890)
- Refactor binding declarations by @raskad in [#2887](https://github.com/boa-dev/boa/pull/2887)
- Cleanup some bytecompiler code by @raskad in [#2918](https://github.com/boa-dev/boa/pull/2918)
- Fix `use_self` lints by @raskad in [#2946](https://github.com/boa-dev/boa/pull/2946)
- Remove unused lint allows by @raskad in [#2968](https://github.com/boa-dev/boa/pull/2968)
- Decouple bytecompiler from CodeBlock by @HalidOdat in [#2669](https://github.com/boa-dev/boa/pull/2669)
- Clarity changes for the VM by @nekevss in [#2531](https://github.com/boa-dev/boa/pull/2531)
- Bump bitflags to 2.0.0 by @Razican in [#2666](https://github.com/boa-dev/boa/pull/2666)
- Replace deprecated set-output command by @karol-jani in [#2500](https://github.com/boa-dev/boa/pull/2500)
- Documentation Updates by @nekevss in [#2463](https://github.com/boa-dev/boa/pull/2463)
- Fixed typo in the docs by @Razican in [#2450](https://github.com/boa-dev/boa/pull/2450)
- update tasks.json by @jasonwilliams in [#2313](https://github.com/boa-dev/boa/pull/2313)
- Updated the Code of Conduct by @Razican in [#2365](https://github.com/boa-dev/boa/pull/2365)
- Bump serde_json from 1.0.85 to 1.0.86 by @jedel1043 in [#2341](https://github.com/boa-dev/boa/pull/2341)
- Add test case for issue #2719 by @jedel1043 in [#2980](https://github.com/boa-dev/boa/pull/2980)
- Remove unneded `num_bindings` in `Opcode`s and `CodeBlock` by @HalidOdat in [#2967](https://github.com/boa-dev/boa/pull/2967)
- Added period to sentence by @nekevss in [#2939](https://github.com/boa-dev/boa/pull/2939)
- Prune collected shared shapes by @HalidOdat in [#2941](https://github.com/boa-dev/boa/pull/2941)
- Separate declarative environment kinds by @jedel1043 in [#2921](https://github.com/boa-dev/boa/pull/2921)
- Shrink environment binding locators by @HalidOdat in [#2950](https://github.com/boa-dev/boa/pull/2950)
- Extract "About Boa" section into a separate file by @jedel1043 in [#2938](https://github.com/boa-dev/boa/pull/2938)
- Remove `arguments_binding` field from `CodeBlock` by @HalidOdat in [#2969](https://github.com/boa-dev/boa/pull/2969)
- Remove redundant `param_count` field from `CallFrame` by @HalidOdat in [#2962](https://github.com/boa-dev/boa/pull/2962)
- Direct length access on arrays by @HalidOdat in [#2796](https://github.com/boa-dev/boa/pull/2796)
- Prevent allocation of field names by @HalidOdat in [#2901](https://github.com/boa-dev/boa/pull/2901)
- Added unit tests for `boa_ast::Punctuator` by @Razican in [#2884](https://github.com/boa-dev/boa/pull/2884)
- Added unit tests for `boa_ast::Keyword` by @Razican in [#2883](https://github.com/boa-dev/boa/pull/2883)
- Make update operations reuse the last found binding locator by @jedel1043 in [#2876](https://github.com/boa-dev/boa/pull/2876)
- Docs update for boa_runtime and console documentation by @nekevss in [#2891](https://github.com/boa-dev/boa/pull/2891)
- Direct array element access on `ByValue` instructions by @HalidOdat in [#2827](https://github.com/boa-dev/boa/pull/2827)
- Optimize `String.prototype.normalize` by @jedel1043 in [#2848](https://github.com/boa-dev/boa/pull/2848)
- Fix more Annex B tests by @jedel1043 in [#2841](https://github.com/boa-dev/boa/pull/2841)
- Enable github queues and remove bors.toml by @jedel1043 in [#2899](https://github.com/boa-dev/boa/pull/2899)
- Shrink size of `IndexedProperties` by @HalidOdat in [#2757](https://github.com/boa-dev/boa/pull/2757)
- Added an example usage to documentation by @Razican in [#2742](https://github.com/boa-dev/boa/pull/2742)
- Don't construct prototype if not needed by @HalidOdat in [#2751](https://github.com/boa-dev/boa/pull/2751)
- Implement `is_identifier_(start/part)` using `icu_properties` by @jedel1043 in [#2865](https://github.com/boa-dev/boa/pull/2865)
- Add boa logo to remaining hosted docs by @nekevss in [#2740](https://github.com/boa-dev/boa/pull/2740)
- Added a bunch more tests by @Razican in [#2885](https://github.com/boa-dev/boa/pull/2885)
- Updated dependencies, removes `remove_dir_all`, which is vulnerable by @Razican in [#2685](https://github.com/boa-dev/boa/pull/2685)
- Updated README by @Razican in [#2825](https://github.com/boa-dev/boa/pull/2825)
- Remove panics on module compilation by @jedel1043 in [#2730](https://github.com/boa-dev/boa/pull/2730)
- Update icu dependencies by @raskad in [#2574](https://github.com/boa-dev/boa/pull/2574)
- Pin tarpaulin version to 0.22 by @jedel1043 in [#2562](https://github.com/boa-dev/boa/pull/2562)
- Improve the design of ephemerons in our GC by @jedel1043 in [#2530](https://github.com/boa-dev/boa/pull/2530)
- Pass locale data provider by ref instead of boxing by @jedel1043 in [#2508](https://github.com/boa-dev/boa/pull/2508)
- Fast path for static property keys by @tunz in [#2604](https://github.com/boa-dev/boa/pull/2604)
- Replace `criterion::black_box` with `std::hint::black_box` by @jedel1043 in [#2494](https://github.com/boa-dev/boa/pull/2494)
- Shrink objects by using `ThinVec`s by @HalidOdat in [#2752](https://github.com/boa-dev/boa/pull/2752)
- Redesign native functions and closures API by @jedel1043 in [#2499](https://github.com/boa-dev/boa/pull/2499)
- Make the `wasmbind` feature of the `chrono` crate optional by @Razican in [#2810](https://github.com/boa-dev/boa/pull/2810)
- Use opcode table rather than match by @tunz in [#2501](https://github.com/boa-dev/boa/pull/2501)
- Align iterator loops to the spec by @jedel1043 in [#2686](https://github.com/boa-dev/boa/pull/2686)
- Add AST node for parenthesized expressions by @raskad in [#2738](https://github.com/boa-dev/boa/pull/2738)
- Optimize Get/SetPropertyByName by @tunz in [#2608](https://github.com/boa-dev/boa/pull/2608)
- Keep Integer type for inc/dec of an integer by @tunz in [#2615](https://github.com/boa-dev/boa/pull/2615)
- Implement `CompletionRecords` for the Vm by @nekevss in [#2618](https://github.com/boa-dev/boa/pull/2618)
- Feature flag on builtins console import by @nekevss in [#2584](https://github.com/boa-dev/boa/pull/2584)
- Fix documentation links by @Razican in [#2741](https://github.com/boa-dev/boa/pull/2741)
- Updated syn to 2.0.3 by @Razican in [#2702](https://github.com/boa-dev/boa/pull/2702)
- Cleanup intrinsics and move to realm by @jedel1043 in [#2555](https://github.com/boa-dev/boa/pull/2555)
- Rename `check_parser` and `Identifier` by @jedel1043 in [#2576](https://github.com/boa-dev/boa/pull/2576)
- Fix rust 1.67 lints by @raskad in [#2567](https://github.com/boa-dev/boa/pull/2567)
- Avoid unneeded bounds checks in bytecode address patching by @HalidOdat in [#2680](https://github.com/boa-dev/boa/pull/2680)
- Rust 1.68 clippy fixes by @nekevss in [#2646](https://github.com/boa-dev/boa/pull/2646)
- Fix rust 1.70 lints by @raskad in [#2990](https://github.com/boa-dev/boa/pull/2990)
- Simplify/Refactor exception handling and last statement value by @HalidOdat in [#3053](https://github.com/boa-dev/boa/pull/3053)

## [0.16.0 (2022-09-25)](https://github.com/boa-dev/boa/compare/v0.15...v0.16)

### Feature Enhancements

- Implement getter and setter of `Object.prototype.__proto__` by @CYBAI in [#2110](https://github.com/boa-dev/boa/pull/2110)
- Execution stack & promises by @Razican in [#2107](https://github.com/boa-dev/boa/pull/2107)
- Add the `[[Done]]` field to iterators by @Razican in [#2125](https://github.com/boa-dev/boa/pull/2125)
- Fix for in/of loop initializer environment by @raskad in [#2135](https://github.com/boa-dev/boa/pull/2135)
- Implement `Promise.all` by @raskad in [#2140](https://github.com/boa-dev/boa/pull/2140)
- Implement `Promise.any` by @raskad in [#2145](https://github.com/boa-dev/boa/pull/2145)
- Implement `Promise.allSettled` by @raskad in [#2146](https://github.com/boa-dev/boa/pull/2146)
- Implement `super` expressions by @raskad in [#2116](https://github.com/boa-dev/boa/pull/2116)
- Implement `async function` and `await` by @raskad in [#2158](https://github.com/boa-dev/boa/pull/2158)
- Implementation of `JsMap` Wrapper by @nekevss in [#2115](https://github.com/boa-dev/boa/pull/2115)
- Safe wrapper for `JsSet` by @anuvratsingh in [#2162](https://github.com/boa-dev/boa/pull/2162)
- Implement `JsArrayBuffer` by @HalidOdat in [#2170](https://github.com/boa-dev/boa/pull/2170)
- Implement arrow function parsing based on `CoverParenthesizedExpressionAndArrowParameterList` by @raskad in [#2171](https://github.com/boa-dev/boa/pull/2171)
- Implement Generator Function Constructor by @raskad in [#2174](https://github.com/boa-dev/boa/pull/2174)
- Parse class private async generator methods by @raskad in [#2220](https://github.com/boa-dev/boa/pull/2220)
- Implement Async Generators by @raskad in [#2200](https://github.com/boa-dev/boa/pull/2200)
- Add field accessors to destructing assignment by @raskad in [#2213](https://github.com/boa-dev/boa/pull/2213)
- Added a bit more integer operation consistency to ByteDataBlock creation by @Razican in [#2272](https://github.com/boa-dev/boa/pull/2272)
- Implement Async-from-Sync Iterator Objects by @raskad in [#2234](https://github.com/boa-dev/boa/pull/2234)
- Add URI encoding and decoding functions by @Razican in [#2267](https://github.com/boa-dev/boa/pull/2267)
- Implement `for await...of` loops by @raskad in [#2286](https://github.com/boa-dev/boa/pull/2286)

### Bug Fixes

- Fix `eval` attributes by @raskad in [#2130](https://github.com/boa-dev/boa/pull/2130)
- Fix `this` in function calls by @raskad in [#2153](https://github.com/boa-dev/boa/pull/2153)
- Fix remaining `Promise` bugs by @raskad in [#2156](https://github.com/boa-dev/boa/pull/2156)
- Fix length/index in `32bit` architectures by @HalidOdat in [#2196](https://github.com/boa-dev/boa/pull/2196)
- Fix `yield` expression to end on line terminator by @raskad in [#2232](https://github.com/boa-dev/boa/pull/2232)
- Fix spread arguments in function calls by @raskad in [#2216](https://github.com/boa-dev/boa/pull/2216)
- Fix `arguments` object iterator function by @raskad in [#2231](https://github.com/boa-dev/boa/pull/2231)
- check history file exist if not create it by @udhaykumarbala in [#2245](https://github.com/boa-dev/boa/pull/2245)
- Do not auto-insert semicolon in `VariableDeclarationList` by @tunz in [#2266](https://github.com/boa-dev/boa/pull/2266)
- Fix property access of call expression by @tunz in [#2273](https://github.com/boa-dev/boa/pull/2273)
- fix computed property methods can call super methods by @creampnx-x in [#2274](https://github.com/boa-dev/boa/pull/2274)
- Fix regex literal `/[/]/` by @tunz in [#2277](https://github.com/boa-dev/boa/pull/2277)
- Fixed assignment expression parsing by @Razican in [#2268](https://github.com/boa-dev/boa/pull/2268)
- Fix labelled block statement by @creampnx-x in [#2285](https://github.com/boa-dev/boa/pull/2285)
- Implement missing global object internal methods by @raskad in [#2287](https://github.com/boa-dev/boa/pull/2287)

### Internal Improvements

- Fix spec links for some object operation methods by @CYBAI in [#2111](https://github.com/boa-dev/boa/pull/2111)
- Only run benchmarks on PRs when a label is set by @raskad in [#2114](https://github.com/boa-dev/boa/pull/2114)
- Refactor `construct` and `PromiseCapability` to preserve `JsObject` invariants by @jedel1043 in [#2136](https://github.com/boa-dev/boa/pull/2136)
- Remove `string-interner` dependency and implement custom string `Interner` by @jedel1043 in [#2147](https://github.com/boa-dev/boa/pull/2147)
- Fix clippy 1.62.0 lints by @raskad in [#2154](https://github.com/boa-dev/boa/pull/2154)
- Store call frames in `Vec` instead of singly-linked list by @HalidOdat in [#2164](https://github.com/boa-dev/boa/pull/2164)
- Dense/Packed JavaScript arrays by @HalidOdat in [#2167](https://github.com/boa-dev/boa/pull/2167)
- Fix Rust 1.63 clippy lints by @raskad in [#2230](https://github.com/boa-dev/boa/pull/2230)
- Removed some `unsafe_empty_trace!()` calls to improve performance by @Razican in [#2233](https://github.com/boa-dev/boa/pull/2233)
- Add integer type to fast path of `to_property_key` by @tunz in [#2261](https://github.com/boa-dev/boa/pull/2261)

**Full Changelog**: https://github.com/boa-dev/boa/compare/v0.14...v0.15

## [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<f32> 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<R>` 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<JsObject>` 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 cha
Download .txt
gitextract_xo92gz2d/

├── .cargo/
│   └── config.toml
├── .config/
│   └── nextest.toml
├── .editorconfig
├── .gitattributes
├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   ├── config.yml
│   │   ├── custom.md
│   │   └── feature_request.md
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── codecov.yml
│   ├── dependabot.yml
│   ├── labeler.yml
│   ├── release.yml
│   └── workflows/
│       ├── codeql.yml
│       ├── labeler.yml
│       ├── nightly_build.yml
│       ├── pr_management.yml
│       ├── pull_request.yml
│       ├── release.yml
│       ├── rust.yml
│       ├── security_audit.yml
│       ├── test262.yml
│       ├── test262_comment.yml
│       ├── test262_release.yml
│       └── webassembly.yml
├── .gitignore
├── .husky/
│   └── pre-push
├── .prettierignore
├── .vscode/
│   ├── launch.json
│   └── tasks.json
├── ABOUT.md
├── CHANGELOG.md
├── CODEOWNERS
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Cargo.toml
├── LICENSE-MIT
├── LICENSE-UNLICENSE
├── Makefile.toml
├── PR_MESSAGE_EXPECT_EXPRESSION.md
├── README.md
├── SECURITY.md
├── benches/
│   ├── Cargo.toml
│   ├── benches/
│   │   └── scripts.rs
│   ├── scripts/
│   │   ├── basic/
│   │   │   ├── call-loop.js
│   │   │   ├── closure.js
│   │   │   └── nested-loop.js
│   │   ├── closures/
│   │   │   ├── create.js
│   │   │   └── invoke.js
│   │   ├── intl/
│   │   │   ├── collator-compare.js
│   │   │   ├── collator-construction.js
│   │   │   ├── datetimeformat-construction.js
│   │   │   ├── datetimeformat-format.js
│   │   │   ├── datetimeformat-with-options.js
│   │   │   ├── datetimeformat_resolved_options.js
│   │   │   ├── listformat-construction.js
│   │   │   ├── listformat-format.js
│   │   │   ├── numberformat-construction.js
│   │   │   ├── numberformat-different-options.js
│   │   │   ├── pluralrules-construction.js
│   │   │   ├── pluralrules-select.js
│   │   │   ├── segmenter-construction.js
│   │   │   └── segmenter-segment.js
│   │   ├── properties/
│   │   │   └── access.js
│   │   ├── prototypes/
│   │   │   └── chain.js
│   │   ├── strings/
│   │   │   ├── concat.js
│   │   │   ├── replace.js
│   │   │   ├── slice.js
│   │   │   └── split.js
│   │   └── v8-benches/
│   │       ├── README.md
│   │       ├── crypto.js
│   │       ├── deltablue.js
│   │       ├── earley-boyer.js
│   │       ├── navier-stokes.js
│   │       ├── raytrace.js
│   │       ├── regexp.js
│   │       ├── richards.js
│   │       └── splay.js
│   └── src/
│       └── lib.rs
├── cli/
│   ├── ABOUT.md
│   ├── Cargo.toml
│   ├── README.md
│   └── src/
│       ├── debug/
│       │   ├── function.rs
│       │   ├── gc.rs
│       │   ├── limits.rs
│       │   ├── mod.rs
│       │   ├── object.rs
│       │   ├── optimizer.rs
│       │   ├── realm.rs
│       │   ├── shape.rs
│       │   └── string.rs
│       ├── executor.rs
│       ├── helper.rs
│       ├── logger.rs
│       └── main.rs
├── clippy.toml
├── core/
│   ├── ast/
│   │   ├── ABOUT.md
│   │   ├── Cargo.toml
│   │   ├── src/
│   │   │   ├── declaration/
│   │   │   │   ├── export.rs
│   │   │   │   ├── import.rs
│   │   │   │   ├── mod.rs
│   │   │   │   └── variable.rs
│   │   │   ├── expression/
│   │   │   │   ├── access.rs
│   │   │   │   ├── await.rs
│   │   │   │   ├── call.rs
│   │   │   │   ├── identifier.rs
│   │   │   │   ├── import_meta.rs
│   │   │   │   ├── literal/
│   │   │   │   │   ├── array.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── object.rs
│   │   │   │   │   └── template.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── new.rs
│   │   │   │   ├── new_target.rs
│   │   │   │   ├── operator/
│   │   │   │   │   ├── assign/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── op.rs
│   │   │   │   │   ├── binary/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── op.rs
│   │   │   │   │   ├── conditional.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── unary/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── op.rs
│   │   │   │   │   └── update/
│   │   │   │   │       ├── mod.rs
│   │   │   │   │       └── op.rs
│   │   │   │   ├── optional.rs
│   │   │   │   ├── parenthesized.rs
│   │   │   │   ├── regexp.rs
│   │   │   │   ├── spread.rs
│   │   │   │   ├── tagged_template.rs
│   │   │   │   ├── this.rs
│   │   │   │   └── yield.rs
│   │   │   ├── function/
│   │   │   │   ├── arrow_function.rs
│   │   │   │   ├── async_arrow_function.rs
│   │   │   │   ├── async_function.rs
│   │   │   │   ├── async_generator.rs
│   │   │   │   ├── class.rs
│   │   │   │   ├── generator.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── ordinary_function.rs
│   │   │   │   └── parameters.rs
│   │   │   ├── keyword/
│   │   │   │   ├── mod.rs
│   │   │   │   └── tests.rs
│   │   │   ├── lib.rs
│   │   │   ├── module_item_list/
│   │   │   │   └── mod.rs
│   │   │   ├── operations/
│   │   │   │   ├── mod.rs
│   │   │   │   └── tests.rs
│   │   │   ├── pattern.rs
│   │   │   ├── position.rs
│   │   │   ├── property.rs
│   │   │   ├── punctuator/
│   │   │   │   ├── mod.rs
│   │   │   │   └── tests.rs
│   │   │   ├── scope.rs
│   │   │   ├── scope_analyzer.rs
│   │   │   ├── source.rs
│   │   │   ├── source_text.rs
│   │   │   ├── statement/
│   │   │   │   ├── block.rs
│   │   │   │   ├── if.rs
│   │   │   │   ├── iteration/
│   │   │   │   │   ├── break.rs
│   │   │   │   │   ├── continue.rs
│   │   │   │   │   ├── do_while_loop.rs
│   │   │   │   │   ├── for_in_loop.rs
│   │   │   │   │   ├── for_loop.rs
│   │   │   │   │   ├── for_of_loop.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── while_loop.rs
│   │   │   │   ├── labelled.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── return.rs
│   │   │   │   ├── switch.rs
│   │   │   │   ├── throw.rs
│   │   │   │   ├── try.rs
│   │   │   │   └── with.rs
│   │   │   ├── statement_list.rs
│   │   │   └── visitor.rs
│   │   └── tests/
│   │       └── scope.rs
│   ├── engine/
│   │   ├── ABOUT.md
│   │   ├── Cargo.toml
│   │   ├── benches/
│   │   │   ├── README.md
│   │   │   ├── bench_scripts/
│   │   │   │   ├── arithmetic_operations.js
│   │   │   │   ├── array_access.js
│   │   │   │   ├── array_create.js
│   │   │   │   ├── array_pop.js
│   │   │   │   ├── boolean_object_access.js
│   │   │   │   ├── clean_js.js
│   │   │   │   ├── fibonacci.js
│   │   │   │   ├── for_loop.js
│   │   │   │   ├── mini_js.js
│   │   │   │   ├── number_object_access.js
│   │   │   │   ├── object_creation.js
│   │   │   │   ├── object_prop_access_const.js
│   │   │   │   ├── object_prop_access_dyn.js
│   │   │   │   ├── regexp.js
│   │   │   │   ├── regexp_creation.js
│   │   │   │   ├── regexp_literal.js
│   │   │   │   ├── regexp_literal_creation.js
│   │   │   │   ├── string_code_point_sum.js
│   │   │   │   ├── string_compare.js
│   │   │   │   ├── string_concat.js
│   │   │   │   ├── string_copy.js
│   │   │   │   ├── string_object_access.js
│   │   │   │   └── symbol_creation.js
│   │   │   └── full.rs
│   │   ├── src/
│   │   │   ├── bigint.rs
│   │   │   ├── builtins/
│   │   │   │   ├── array/
│   │   │   │   │   ├── array_iterator.rs
│   │   │   │   │   ├── from_async.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── array_buffer/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── shared.rs
│   │   │   │   │   ├── tests.rs
│   │   │   │   │   └── utils.rs
│   │   │   │   ├── async_function/
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── async_generator/
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── async_generator_function/
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── atomics/
│   │   │   │   │   ├── futex.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── bigint/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── boolean/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── builder.rs
│   │   │   │   ├── dataview/
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── date/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── tests.rs
│   │   │   │   │   └── utils.rs
│   │   │   │   ├── error/
│   │   │   │   │   ├── aggregate.rs
│   │   │   │   │   ├── eval.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── range.rs
│   │   │   │   │   ├── reference.rs
│   │   │   │   │   ├── syntax.rs
│   │   │   │   │   ├── tests.rs
│   │   │   │   │   ├── type.rs
│   │   │   │   │   └── uri.rs
│   │   │   │   ├── escape/
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── eval/
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── finalization_registry/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── function/
│   │   │   │   │   ├── arguments.rs
│   │   │   │   │   ├── bound.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── generator/
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── generator_function/
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── intl/
│   │   │   │   │   ├── collator/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── options.rs
│   │   │   │   │   ├── date_time_format/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── options.rs
│   │   │   │   │   │   └── tests.rs
│   │   │   │   │   ├── list_format/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── options.rs
│   │   │   │   │   ├── locale/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── options.rs
│   │   │   │   │   │   ├── tests.rs
│   │   │   │   │   │   └── utils.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── number_format/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── options.rs
│   │   │   │   │   │   └── tests.rs
│   │   │   │   │   ├── options.rs
│   │   │   │   │   ├── plural_rules/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── options.rs
│   │   │   │   │   └── segmenter/
│   │   │   │   │       ├── iterator.rs
│   │   │   │   │       ├── mod.rs
│   │   │   │   │       ├── options.rs
│   │   │   │   │       └── segments.rs
│   │   │   │   ├── is_html_dda.rs
│   │   │   │   ├── iterable/
│   │   │   │   │   ├── async_from_sync_iterator.rs
│   │   │   │   │   ├── iterator_constructor.rs
│   │   │   │   │   ├── iterator_helper.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── tests.rs
│   │   │   │   │   └── wrap_for_valid_iterator.rs
│   │   │   │   ├── json/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── map/
│   │   │   │   │   ├── map_iterator.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── ordered_map.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── math/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── number/
│   │   │   │   │   ├── conversions.rs
│   │   │   │   │   ├── globals.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── object/
│   │   │   │   │   ├── for_in_iterator.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── options.rs
│   │   │   │   ├── promise/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── proxy/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── reflect/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── regexp/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── regexp_string_iterator.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── set/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── ordered_set.rs
│   │   │   │   │   ├── set_iterator.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── string/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── string_iterator.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── symbol/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── temporal/
│   │   │   │   │   ├── calendar/
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── duration/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── tests.rs
│   │   │   │   │   ├── error.rs
│   │   │   │   │   ├── instant/
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── now.rs
│   │   │   │   │   ├── options.rs
│   │   │   │   │   ├── plain_date/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── tests.rs
│   │   │   │   │   ├── plain_date_time/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── tests.rs
│   │   │   │   │   ├── plain_month_day/
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── plain_time/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── tests.rs
│   │   │   │   │   ├── plain_year_month/
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── tests.rs
│   │   │   │   │   └── zoneddatetime/
│   │   │   │   │       └── mod.rs
│   │   │   │   ├── typed_array/
│   │   │   │   │   ├── builtin.rs
│   │   │   │   │   ├── element/
│   │   │   │   │   │   ├── atomic.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── object.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── uri/
│   │   │   │   │   ├── consts.rs
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── weak/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── weak_ref.rs
│   │   │   │   ├── weak_map/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   └── weak_set/
│   │   │   │       ├── mod.rs
│   │   │   │       └── tests.rs
│   │   │   ├── bytecompiler/
│   │   │   │   ├── class.rs
│   │   │   │   ├── declaration/
│   │   │   │   │   ├── declaration_pattern.rs
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── declarations.rs
│   │   │   │   ├── env.rs
│   │   │   │   ├── expression/
│   │   │   │   │   ├── assign.rs
│   │   │   │   │   ├── binary.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── object_literal.rs
│   │   │   │   │   ├── unary.rs
│   │   │   │   │   └── update.rs
│   │   │   │   ├── function.rs
│   │   │   │   ├── generator.rs
│   │   │   │   ├── jump_control.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── module.rs
│   │   │   │   ├── register.rs
│   │   │   │   ├── statement/
│   │   │   │   │   ├── block.rs
│   │   │   │   │   ├── break.rs
│   │   │   │   │   ├── continue.rs
│   │   │   │   │   ├── if.rs
│   │   │   │   │   ├── labelled.rs
│   │   │   │   │   ├── loop.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── switch.rs
│   │   │   │   │   ├── try.rs
│   │   │   │   │   └── with.rs
│   │   │   │   └── utils.rs
│   │   │   ├── class.rs
│   │   │   ├── context/
│   │   │   │   ├── hooks.rs
│   │   │   │   ├── icu.rs
│   │   │   │   ├── intrinsics.rs
│   │   │   │   ├── mod.rs
│   │   │   │   └── time.rs
│   │   │   ├── environments/
│   │   │   │   ├── mod.rs
│   │   │   │   ├── runtime/
│   │   │   │   │   ├── declarative/
│   │   │   │   │   │   ├── function.rs
│   │   │   │   │   │   ├── global.rs
│   │   │   │   │   │   ├── lexical.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── module.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── private.rs
│   │   │   │   └── tests.rs
│   │   │   ├── error/
│   │   │   │   ├── mod.rs
│   │   │   │   └── tests.rs
│   │   │   ├── host_defined.rs
│   │   │   ├── interop/
│   │   │   │   ├── into_js_arguments.rs
│   │   │   │   ├── into_js_function_impls.rs
│   │   │   │   └── mod.rs
│   │   │   ├── job.rs
│   │   │   ├── lib.rs
│   │   │   ├── module/
│   │   │   │   ├── loader/
│   │   │   │   │   ├── embedded.rs
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── namespace.rs
│   │   │   │   ├── source.rs
│   │   │   │   └── synthetic.rs
│   │   │   ├── native_function/
│   │   │   │   ├── continuation.rs
│   │   │   │   └── mod.rs
│   │   │   ├── object/
│   │   │   │   ├── builtins/
│   │   │   │   │   ├── jsarray.rs
│   │   │   │   │   ├── jsarraybuffer.rs
│   │   │   │   │   ├── jsasyncgenerator.rs
│   │   │   │   │   ├── jsdataview.rs
│   │   │   │   │   ├── jsdate.rs
│   │   │   │   │   ├── jsfinalization_registry.rs
│   │   │   │   │   ├── jsfunction.rs
│   │   │   │   │   ├── jsgenerator.rs
│   │   │   │   │   ├── jsgeneratorfunction.rs
│   │   │   │   │   ├── jsmap.rs
│   │   │   │   │   ├── jsmap_iterator.rs
│   │   │   │   │   ├── jspromise.rs
│   │   │   │   │   ├── jsproxy.rs
│   │   │   │   │   ├── jsregexp.rs
│   │   │   │   │   ├── jsset.rs
│   │   │   │   │   ├── jsset_iterator.rs
│   │   │   │   │   ├── jssharedarraybuffer.rs
│   │   │   │   │   ├── jstypedarray.rs
│   │   │   │   │   ├── jsweakmap.rs
│   │   │   │   │   ├── jsweakset.rs
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── datatypes.rs
│   │   │   │   ├── internal_methods/
│   │   │   │   │   ├── immutable_prototype.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── string.rs
│   │   │   │   ├── jsobject.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── operations.rs
│   │   │   │   ├── property_map.rs
│   │   │   │   ├── shape/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── property_table.rs
│   │   │   │   │   ├── root_shape.rs
│   │   │   │   │   ├── shared_shape/
│   │   │   │   │   │   ├── forward_transition.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── template.rs
│   │   │   │   │   │   └── tests.rs
│   │   │   │   │   ├── slot.rs
│   │   │   │   │   └── unique_shape.rs
│   │   │   │   └── tests.rs
│   │   │   ├── optimizer/
│   │   │   │   ├── mod.rs
│   │   │   │   ├── pass/
│   │   │   │   │   ├── constant_folding.rs
│   │   │   │   │   ├── dead_code_elimination.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── strength_reduction.rs
│   │   │   │   └── walker.rs
│   │   │   ├── property/
│   │   │   │   ├── attribute/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── mod.rs
│   │   │   │   └── nonmaxu32.rs
│   │   │   ├── realm.rs
│   │   │   ├── script.rs
│   │   │   ├── spanned_source_text.rs
│   │   │   ├── string.rs
│   │   │   ├── symbol.rs
│   │   │   ├── sys/
│   │   │   │   ├── fallback/
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── js/
│   │   │   │   │   └── mod.rs
│   │   │   │   └── mod.rs
│   │   │   ├── tests/
│   │   │   │   ├── async_generator.rs
│   │   │   │   ├── class.rs
│   │   │   │   ├── control_flow/
│   │   │   │   │   ├── loops.rs
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── env.rs
│   │   │   │   ├── function.rs
│   │   │   │   ├── generators.rs
│   │   │   │   ├── iterators.rs
│   │   │   │   ├── job.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── operators.rs
│   │   │   │   ├── promise.rs
│   │   │   │   ├── spread.rs
│   │   │   │   └── to_string.rs
│   │   │   ├── try_into_js_result_impls.rs
│   │   │   ├── value/
│   │   │   │   ├── conversions/
│   │   │   │   │   ├── convert.rs
│   │   │   │   │   ├── either.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── nullable/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── tests.rs
│   │   │   │   │   ├── serde_json.rs
│   │   │   │   │   ├── try_from_js/
│   │   │   │   │   │   ├── collections.rs
│   │   │   │   │   │   └── tuples.rs
│   │   │   │   │   ├── try_from_js.rs
│   │   │   │   │   └── try_into_js.rs
│   │   │   │   ├── display/
│   │   │   │   │   ├── arguments.rs
│   │   │   │   │   ├── array.rs
│   │   │   │   │   ├── map.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── object.rs
│   │   │   │   │   ├── primitives.rs
│   │   │   │   │   ├── set.rs
│   │   │   │   │   ├── typed_array.rs
│   │   │   │   │   └── value.rs
│   │   │   │   ├── equality.rs
│   │   │   │   ├── hash.rs
│   │   │   │   ├── inner/
│   │   │   │   │   ├── legacy.rs
│   │   │   │   │   └── nan_boxed.rs
│   │   │   │   ├── inner.rs
│   │   │   │   ├── integer.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── operations.rs
│   │   │   │   ├── tests.rs
│   │   │   │   ├── type.rs
│   │   │   │   └── variant.rs
│   │   │   └── vm/
│   │   │       ├── call_frame/
│   │   │       │   └── mod.rs
│   │   │       ├── code_block.rs
│   │   │       ├── completion_record.rs
│   │   │       ├── flowgraph/
│   │   │       │   ├── color.rs
│   │   │       │   ├── edge.rs
│   │   │       │   ├── graph.rs
│   │   │       │   ├── mod.rs
│   │   │       │   └── node.rs
│   │   │       ├── inline_cache/
│   │   │       │   ├── mod.rs
│   │   │       │   └── tests.rs
│   │   │       ├── mod.rs
│   │   │       ├── opcode/
│   │   │       │   ├── args.rs
│   │   │       │   ├── arguments.rs
│   │   │       │   ├── await/
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── binary_ops/
│   │   │       │   │   ├── logical.rs
│   │   │       │   │   ├── macro_defined.rs
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── call/
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── concat/
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── control_flow/
│   │   │       │   │   ├── jump.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   ├── return.rs
│   │   │       │   │   └── throw.rs
│   │   │       │   ├── copy/
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── define/
│   │   │       │   │   ├── class/
│   │   │       │   │   │   ├── getter.rs
│   │   │       │   │   │   ├── method.rs
│   │   │       │   │   │   ├── mod.rs
│   │   │       │   │   │   └── setter.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   └── own_property.rs
│   │   │       │   ├── delete/
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── environment/
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── function.rs
│   │   │       │   ├── generator/
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   └── yield_stm.rs
│   │   │       │   ├── get/
│   │   │       │   │   ├── argument.rs
│   │   │       │   │   ├── function.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   ├── name.rs
│   │   │       │   │   ├── private.rs
│   │   │       │   │   └── property.rs
│   │   │       │   ├── iteration/
│   │   │       │   │   ├── for_in.rs
│   │   │       │   │   ├── get.rs
│   │   │       │   │   ├── iterator.rs
│   │   │       │   │   ├── loop_ops.rs
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── meta/
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── new/
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── nop/
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── object.rs
│   │   │       │   ├── pop/
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── push/
│   │   │       │   │   ├── array.rs
│   │   │       │   │   ├── class/
│   │   │       │   │   │   ├── field.rs
│   │   │       │   │   │   ├── mod.rs
│   │   │       │   │   │   └── private.rs
│   │   │       │   │   ├── environment.rs
│   │   │       │   │   ├── literal.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   ├── numbers.rs
│   │   │       │   │   └── object.rs
│   │   │       │   ├── rest_parameter/
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── set/
│   │   │       │   │   ├── class_prototype.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   ├── name.rs
│   │   │       │   │   ├── private.rs
│   │   │       │   │   └── property.rs
│   │   │       │   ├── switch/
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── templates/
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── to/
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── unary_ops/
│   │   │       │   │   ├── decrement.rs
│   │   │       │   │   ├── increment.rs
│   │   │       │   │   ├── logical.rs
│   │   │       │   │   └── mod.rs
│   │   │       │   └── value/
│   │   │       │       └── mod.rs
│   │   │       ├── runtime_limits.rs
│   │   │       ├── shadow_stack.rs
│   │   │       ├── source_info/
│   │   │       │   ├── builder/
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   └── tests.rs
│   │   │       │   ├── mod.rs
│   │   │       │   └── tests.rs
│   │   │       └── tests.rs
│   │   └── tests/
│   │       ├── assets/
│   │       │   ├── dir1/
│   │       │   │   ├── file1_1.js
│   │       │   │   └── file1_2.js
│   │       │   ├── file1.js
│   │       │   └── gcd.js
│   │       ├── gcd.rs
│   │       ├── imports.rs
│   │       ├── macros.rs
│   │       └── module.rs
│   ├── gc/
│   │   ├── ABOUT.md
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── cell.rs
│   │       ├── internals/
│   │       │   ├── ephemeron_box.rs
│   │       │   ├── gc_box.rs
│   │       │   ├── gc_header.rs
│   │       │   ├── mod.rs
│   │       │   ├── vtable.rs
│   │       │   └── weak_map_box.rs
│   │       ├── lib.rs
│   │       ├── pointers/
│   │       │   ├── ephemeron.rs
│   │       │   ├── gc.rs
│   │       │   ├── mod.rs
│   │       │   ├── weak.rs
│   │       │   └── weak_map.rs
│   │       ├── test/
│   │       │   ├── allocation.rs
│   │       │   ├── cell.rs
│   │       │   ├── erased.rs
│   │       │   ├── mod.rs
│   │       │   ├── std_types.rs
│   │       │   ├── weak.rs
│   │       │   └── weak_map.rs
│   │       └── trace.rs
│   ├── icu_provider/
│   │   ├── ABOUT.md
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── data/
│   │   │   ├── icu_casemap.postcard
│   │   │   ├── icu_collator.postcard
│   │   │   ├── icu_datetime.postcard
│   │   │   ├── icu_decimal.postcard
│   │   │   ├── icu_list.postcard
│   │   │   ├── icu_locale.postcard
│   │   │   ├── icu_normalizer.postcard
│   │   │   ├── icu_plurals.postcard
│   │   │   ├── icu_segmenter.postcard
│   │   │   └── icu_time.postcard
│   │   └── src/
│   │       └── lib.rs
│   ├── interner/
│   │   ├── ABOUT.md
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── fixed_string.rs
│   │       ├── interned_str.rs
│   │       ├── lib.rs
│   │       ├── raw.rs
│   │       ├── sym.rs
│   │       └── tests.rs
│   ├── macros/
│   │   ├── ABOUT.md
│   │   ├── Cargo.toml
│   │   ├── src/
│   │   │   ├── class.rs
│   │   │   ├── embedded_module_loader.rs
│   │   │   ├── lib.rs
│   │   │   ├── module.rs
│   │   │   ├── utils.rs
│   │   │   └── value.rs
│   │   └── tests/
│   │       └── str.rs
│   ├── parser/
│   │   ├── ABOUT.md
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── error/
│   │       │   ├── mod.rs
│   │       │   └── tests.rs
│   │       ├── lexer/
│   │       │   ├── comment.rs
│   │       │   ├── cursor.rs
│   │       │   ├── error.rs
│   │       │   ├── identifier.rs
│   │       │   ├── mod.rs
│   │       │   ├── number.rs
│   │       │   ├── operator.rs
│   │       │   ├── private_identifier.rs
│   │       │   ├── regex.rs
│   │       │   ├── spread.rs
│   │       │   ├── string.rs
│   │       │   ├── template.rs
│   │       │   ├── tests.rs
│   │       │   └── token.rs
│   │       ├── lib.rs
│   │       ├── parser/
│   │       │   ├── cursor/
│   │       │   │   ├── buffered_lexer/
│   │       │   │   │   ├── mod.rs
│   │       │   │   │   └── tests.rs
│   │       │   │   └── mod.rs
│   │       │   ├── expression/
│   │       │   │   ├── assignment/
│   │       │   │   │   ├── arrow_function.rs
│   │       │   │   │   ├── async_arrow_function.rs
│   │       │   │   │   ├── conditional.rs
│   │       │   │   │   ├── exponentiation.rs
│   │       │   │   │   ├── mod.rs
│   │       │   │   │   └── yield.rs
│   │       │   │   ├── await_expr.rs
│   │       │   │   ├── fpl_or_exp.rs
│   │       │   │   ├── identifiers.rs
│   │       │   │   ├── left_hand_side/
│   │       │   │   │   ├── arguments.rs
│   │       │   │   │   ├── call.rs
│   │       │   │   │   ├── member.rs
│   │       │   │   │   ├── mod.rs
│   │       │   │   │   ├── optional/
│   │       │   │   │   │   ├── mod.rs
│   │       │   │   │   │   └── tests.rs
│   │       │   │   │   ├── template.rs
│   │       │   │   │   └── tests.rs
│   │       │   │   ├── mod.rs
│   │       │   │   ├── primary/
│   │       │   │   │   ├── array_initializer/
│   │       │   │   │   │   ├── mod.rs
│   │       │   │   │   │   └── tests.rs
│   │       │   │   │   ├── async_function_expression/
│   │       │   │   │   │   ├── mod.rs
│   │       │   │   │   │   └── tests.rs
│   │       │   │   │   ├── async_generator_expression/
│   │       │   │   │   │   ├── mod.rs
│   │       │   │   │   │   └── tests.rs
│   │       │   │   │   ├── class_expression/
│   │       │   │   │   │   └── mod.rs
│   │       │   │   │   ├── function_expression/
│   │       │   │   │   │   ├── mod.rs
│   │       │   │   │   │   └── tests.rs
│   │       │   │   │   ├── generator_expression/
│   │       │   │   │   │   ├── mod.rs
│   │       │   │   │   │   └── tests.rs
│   │       │   │   │   ├── mod.rs
│   │       │   │   │   ├── object_initializer/
│   │       │   │   │   │   ├── mod.rs
│   │       │   │   │   │   └── tests.rs
│   │       │   │   │   ├── template/
│   │       │   │   │   │   └── mod.rs
│   │       │   │   │   └── tests.rs
│   │       │   │   ├── tests.rs
│   │       │   │   ├── unary.rs
│   │       │   │   └── update.rs
│   │       │   ├── function/
│   │       │   │   ├── mod.rs
│   │       │   │   └── tests.rs
│   │       │   ├── mod.rs
│   │       │   ├── statement/
│   │       │   │   ├── block/
│   │       │   │   │   ├── mod.rs
│   │       │   │   │   └── tests.rs
│   │       │   │   ├── break_stm/
│   │       │   │   │   ├── mod.rs
│   │       │   │   │   └── tests.rs
│   │       │   │   ├── continue_stm/
│   │       │   │   │   ├── mod.rs
│   │       │   │   │   └── tests.rs
│   │       │   │   ├── declaration/
│   │       │   │   │   ├── export.rs
│   │       │   │   │   ├── hoistable/
│   │       │   │   │   │   ├── async_function_decl/
│   │       │   │   │   │   │   ├── mod.rs
│   │       │   │   │   │   │   └── tests.rs
│   │       │   │   │   │   ├── async_generator_decl/
│   │       │   │   │   │   │   ├── mod.rs
│   │       │   │   │   │   │   └── tests.rs
│   │       │   │   │   │   ├── class_decl/
│   │       │   │   │   │   │   ├── mod.rs
│   │       │   │   │   │   │   └── tests.rs
│   │       │   │   │   │   ├── function_decl/
│   │       │   │   │   │   │   ├── mod.rs
│   │       │   │   │   │   │   └── tests.rs
│   │       │   │   │   │   ├── generator_decl/
│   │       │   │   │   │   │   ├── mod.rs
│   │       │   │   │   │   │   └── tests.rs
│   │       │   │   │   │   ├── mod.rs
│   │       │   │   │   │   └── tests.rs
│   │       │   │   │   ├── import.rs
│   │       │   │   │   ├── lexical.rs
│   │       │   │   │   ├── mod.rs
│   │       │   │   │   └── tests.rs
│   │       │   │   ├── expression/
│   │       │   │   │   └── mod.rs
│   │       │   │   ├── if_stm/
│   │       │   │   │   ├── mod.rs
│   │       │   │   │   └── tests.rs
│   │       │   │   ├── iteration/
│   │       │   │   │   ├── do_while_statement.rs
│   │       │   │   │   ├── for_statement.rs
│   │       │   │   │   ├── mod.rs
│   │       │   │   │   ├── tests.rs
│   │       │   │   │   └── while_statement.rs
│   │       │   │   ├── labelled_stm/
│   │       │   │   │   └── mod.rs
│   │       │   │   ├── mod.rs
│   │       │   │   ├── return_stm/
│   │       │   │   │   └── mod.rs
│   │       │   │   ├── switch/
│   │       │   │   │   ├── mod.rs
│   │       │   │   │   └── tests.rs
│   │       │   │   ├── throw/
│   │       │   │   │   ├── mod.rs
│   │       │   │   │   └── tests.rs
│   │       │   │   ├── try_stm/
│   │       │   │   │   ├── catch.rs
│   │       │   │   │   ├── finally.rs
│   │       │   │   │   ├── mod.rs
│   │       │   │   │   └── tests.rs
│   │       │   │   ├── variable/
│   │       │   │   │   └── mod.rs
│   │       │   │   └── with/
│   │       │   │       └── mod.rs
│   │       │   └── tests/
│   │       │       ├── format/
│   │       │       │   ├── declaration.rs
│   │       │       │   ├── expression.rs
│   │       │       │   ├── function/
│   │       │       │   │   ├── class.rs
│   │       │       │   │   └── mod.rs
│   │       │       │   ├── mod.rs
│   │       │       │   └── statement.rs
│   │       │       ├── mod.rs
│   │       │       └── test.js
│   │       └── source/
│   │           ├── mod.rs
│   │           ├── utf16.rs
│   │           └── utf8.rs
│   ├── runtime/
│   │   ├── ABOUT.md
│   │   ├── Cargo.toml
│   │   ├── assets/
│   │   │   └── harness.js
│   │   ├── build.rs
│   │   ├── src/
│   │   │   ├── abort/
│   │   │   │   ├── mod.rs
│   │   │   │   └── tests.rs
│   │   │   ├── base64/
│   │   │   │   ├── mod.rs
│   │   │   │   └── tests.rs
│   │   │   ├── clone/
│   │   │   │   └── mod.rs
│   │   │   ├── console/
│   │   │   │   ├── mod.rs
│   │   │   │   └── tests.rs
│   │   │   ├── extensions.rs
│   │   │   ├── fetch/
│   │   │   │   ├── fetchers.rs
│   │   │   │   ├── headers.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── request.rs
│   │   │   │   ├── response.rs
│   │   │   │   └── tests/
│   │   │   │       ├── e2e.rs
│   │   │   │       ├── headers.rs
│   │   │   │       ├── mod.rs
│   │   │   │       ├── request.rs
│   │   │   │       └── response.rs
│   │   │   ├── interval/
│   │   │   │   └── tests.rs
│   │   │   ├── interval.rs
│   │   │   ├── lib.rs
│   │   │   ├── message/
│   │   │   │   ├── mod.rs
│   │   │   │   ├── senders.rs
│   │   │   │   └── tests.rs
│   │   │   ├── microtask/
│   │   │   │   ├── mod.rs
│   │   │   │   └── tests.rs
│   │   │   ├── process/
│   │   │   │   ├── mod.rs
│   │   │   │   └── tests.rs
│   │   │   ├── store/
│   │   │   │   ├── from.rs
│   │   │   │   ├── mod.rs
│   │   │   │   └── to.rs
│   │   │   ├── text/
│   │   │   │   ├── encodings.rs
│   │   │   │   ├── mod.rs
│   │   │   │   └── tests.rs
│   │   │   ├── url/
│   │   │   │   └── tests.rs
│   │   │   └── url.rs
│   │   └── tests/
│   │       ├── clone/
│   │       │   ├── complex.js
│   │       │   ├── date.js
│   │       │   ├── errors.js
│   │       │   ├── map.js
│   │       │   ├── object.js
│   │       │   ├── regexp.js
│   │       │   ├── set.js
│   │       │   ├── simple.js
│   │       │   └── transfer.js
│   │       └── clone.rs
│   ├── string/
│   │   ├── ABOUT.md
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── builder.rs
│   │       ├── code_point.rs
│   │       ├── common.rs
│   │       ├── display.rs
│   │       ├── iter.rs
│   │       ├── lib.rs
│   │       ├── str.rs
│   │       ├── tests.rs
│   │       ├── type.rs
│   │       └── vtable/
│   │           ├── mod.rs
│   │           ├── sequence.rs
│   │           ├── slice.rs
│   │           └── static.rs
│   └── wintertc/
│       ├── ABOUT.md
│       ├── Cargo.toml
│       └── src/
│           ├── abort/
│           │   └── mod.rs
│           ├── base64/
│           │   └── mod.rs
│           ├── clone/
│           │   └── mod.rs
│           ├── console/
│           │   └── mod.rs
│           ├── encoding/
│           │   └── mod.rs
│           ├── events/
│           │   └── mod.rs
│           ├── fetch/
│           │   └── mod.rs
│           ├── lib.rs
│           ├── microtask/
│           │   └── mod.rs
│           ├── timers/
│           │   └── mod.rs
│           └── url/
│               └── mod.rs
├── docs/
│   ├── boa_object.md
│   ├── bytecompiler.md
│   ├── debugging.md
│   ├── native_object.md
│   ├── profiling.md
│   ├── shapes.md
│   ├── string.md
│   └── vm.md
├── examples/
│   ├── Cargo.toml
│   ├── README.md
│   ├── scripts/
│   │   ├── calc.js
│   │   ├── calctest.js
│   │   ├── enhancedglobal.js
│   │   ├── helloworld.js
│   │   └── modules/
│   │       ├── operations.mjs
│   │       └── trig.mjs
│   └── src/
│       └── bin/
│           ├── classes.rs
│           ├── closures.rs
│           ├── commuter_visitor.rs
│           ├── derive.rs
│           ├── host_defined.rs
│           ├── jsarray.rs
│           ├── jsarraybuffer.rs
│           ├── jsasyncgenerator.rs
│           ├── jsdate.rs
│           ├── jsgeneratorfunction.rs
│           ├── jsmap.rs
│           ├── jspromise.rs
│           ├── jsregexp.rs
│           ├── jsset.rs
│           ├── jstypedarray.rs
│           ├── jsweakmap.rs
│           ├── jsweakset.rs
│           ├── loadfile.rs
│           ├── loadstring.rs
│           ├── module_fetch_async.rs
│           ├── modulehandler.rs
│           ├── modules.rs
│           ├── properties.rs
│           ├── runtime_limits.rs
│           ├── smol_event_loop.rs
│           ├── symbol_visitor.rs
│           ├── synthetic.rs
│           ├── tokio_event_loop.rs
│           └── try_into_js_derive.rs
├── ffi/
│   └── wasm/
│       ├── .gitignore
│       ├── Cargo.toml
│       ├── LICENSE-MIT
│       ├── LICENSE-UNLICENSE
│       ├── README.md
│       ├── src/
│       │   └── lib.rs
│       └── tests/
│           └── web.rs
├── flake.nix
├── make/
│   └── ci.toml
├── package.json
├── test262_config.toml
├── test_wpt_config.toml
├── tests/
│   ├── Cargo.toml
│   ├── fuzz/
│   │   ├── .gitignore
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── fuzz_targets/
│   │       ├── bytecompiler-implied.rs
│   │       ├── common.rs
│   │       ├── parser-idempotency.rs
│   │       └── vm-implied.rs
│   ├── insta-bytecode/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── scripts/
│   │   │   ├── basic-loop.js
│   │   │   ├── double-loop-function.js
│   │   │   ├── loop-hoisting.js
│   │   │   └── new.js
│   │   └── src/
│   │       ├── lib.rs
│   │       └── snapshots/
│   │           ├── insta_bytecode__compile_bytecode@basic-loop.js.snap
│   │           ├── insta_bytecode__compile_bytecode@double-loop-function.js.snap
│   │           ├── insta_bytecode__compile_bytecode@loop-hoisting.js.snap
│   │           └── insta_bytecode__compile_bytecode@new.js.snap
│   ├── macros/
│   │   ├── Cargo.toml
│   │   └── tests/
│   │       ├── assets/
│   │       │   ├── fibonacci.js
│   │       │   └── gcd_callback.js
│   │       ├── class.rs
│   │       ├── derive/
│   │       │   ├── from_js_with.rs
│   │       │   └── simple_struct.rs
│   │       ├── derive.rs
│   │       ├── embedded/
│   │       │   ├── dir1/
│   │       │   │   ├── file3.js
│   │       │   │   └── file4.js
│   │       │   ├── file1.js
│   │       │   └── file2.js
│   │       ├── embedded.rs
│   │       ├── fibonacci.rs
│   │       ├── gcd_callback.rs
│   │       ├── module.rs
│   │       └── optional.rs
│   ├── src/
│   │   └── lib.rs
│   ├── tester/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── edition.rs
│   │       ├── exec/
│   │       │   ├── js262.rs
│   │       │   └── mod.rs
│   │       ├── main.rs
│   │       ├── read.rs
│   │       └── results.rs
│   └── wpt/
│       ├── .gitignore
│       ├── Cargo.toml
│       ├── build.rs
│       └── src/
│           ├── fetcher/
│           │   └── mod.rs
│           ├── lib.rs
│           └── logger/
│               └── mod.rs
├── tools/
│   ├── gen-icu4x-data/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       └── main.rs
│   └── scripts/
│       ├── Cargo.toml
│       └── src/
│           └── bin/
│               └── regenerate-about.rs
├── typos.toml
└── utils/
    ├── small_btree/
    │   ├── ABOUT.md
    │   ├── Cargo.toml
    │   └── src/
    │       ├── entry.rs
    │       └── lib.rs
    └── tag_ptr/
        ├── ABOUT.md
        ├── Cargo.toml
        └── src/
            └── lib.rs
Download .txt
Showing preview only (1,016K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (12098 symbols across 775 files)

FILE: benches/benches/scripts.rs
  function bench_scripts (line 12) | fn bench_scripts(c: &mut Criterion) {

FILE: benches/scripts/basic/call-loop.js
  function f (line 1) | function f() {}
  function main (line 3) | function main() {

FILE: benches/scripts/basic/closure.js
  function outer (line 1) | function outer() {
  function main (line 14) | function main() {

FILE: benches/scripts/basic/nested-loop.js
  function main (line 3) | function main() {

FILE: benches/scripts/closures/create.js
  function main (line 5) | function main() {

FILE: benches/scripts/closures/invoke.js
  function makeCounter (line 5) | function makeCounter(start) {
  function main (line 24) | function main() {

FILE: benches/scripts/intl/collator-compare.js
  function main (line 4) | function main() {

FILE: benches/scripts/intl/collator-construction.js
  function main (line 4) | function main() {

FILE: benches/scripts/intl/datetimeformat-construction.js
  function main (line 4) | function main() {

FILE: benches/scripts/intl/datetimeformat-format.js
  function main (line 5) | function main() {

FILE: benches/scripts/intl/datetimeformat-with-options.js
  function main (line 3) | function main() {

FILE: benches/scripts/intl/datetimeformat_resolved_options.js
  function main (line 8) | function main() {

FILE: benches/scripts/intl/listformat-construction.js
  function main (line 4) | function main() {

FILE: benches/scripts/intl/listformat-format.js
  function main (line 5) | function main() {

FILE: benches/scripts/intl/numberformat-construction.js
  function main (line 4) | function main() {

FILE: benches/scripts/intl/numberformat-different-options.js
  function main (line 3) | function main() {

FILE: benches/scripts/intl/pluralrules-construction.js
  function main (line 4) | function main() {

FILE: benches/scripts/intl/pluralrules-select.js
  function main (line 4) | function main() {

FILE: benches/scripts/intl/segmenter-construction.js
  function main (line 4) | function main() {

FILE: benches/scripts/intl/segmenter-segment.js
  function main (line 5) | function main() {

FILE: benches/scripts/properties/access.js
  function monoAccess (line 7) | function monoAccess(obj) {
  function polyAccess (line 12) | function polyAccess(obj) {
  function main (line 33) | function main() {

FILE: benches/scripts/prototypes/chain.js
  function buildChain (line 6) | function buildChain(depth) {
  function main (line 21) | function main() {

FILE: benches/scripts/strings/concat.js
  function main (line 17) | function main() {

FILE: benches/scripts/strings/replace.js
  function main (line 15) | function main() {

FILE: benches/scripts/strings/slice.js
  function main (line 5) | function main() {

FILE: benches/scripts/strings/split.js
  function main (line 5) | function main() {

FILE: benches/scripts/v8-benches/crypto.js
  function Benchmark (line 39) | function Benchmark(name, run, setup, tearDown) {
  function BenchmarkResult (line 52) | function BenchmarkResult(benchmark, time) {
  function BenchmarkSuite (line 69) | function BenchmarkSuite(name, reference, benchmarks) {
  function RunStep (line 115) | function RunStep() {
  function Measure (line 207) | function Measure(data) {
  function RunNextSetup (line 252) | function RunNextSetup() {
  function RunNextBenchmark (line 266) | function RunNextBenchmark() {
  function RunNextTearDown (line 277) | function RunNextTearDown() {
  function BigInteger (line 342) | function BigInteger(a, b, c) {
  function nbi (line 351) | function nbi() {
  function am1 (line 363) | function am1(i, x, w, j, c, n) {
  function am2 (line 377) | function am2(i, x, w, j, c, n) {
  function am3 (line 394) | function am3(i, x, w, j, c, n) {
  function am4 (line 412) | function am4(i, x, w, j, c, n) {
  function int2char (line 459) | function int2char(n) {
  function intAt (line 463) | function intAt(s, i) {
  function bnpCopyTo (line 469) | function bnpCopyTo(r) {
  function bnpFromInt (line 479) | function bnpFromInt(x) {
  function nbv (line 489) | function nbv(i) {
  function bnpFromString (line 496) | function bnpFromString(s, b) {
  function bnpClamp (line 538) | function bnpClamp() {
  function bnToString (line 545) | function bnToString(b) {
  function bnNegate (line 581) | function bnNegate() {
  function bnAbs (line 588) | function bnAbs() {
  function bnCompareTo (line 593) | function bnCompareTo(a) {
  function nbits (line 607) | function nbits(x) {
  function bnBitLength (line 633) | function bnBitLength() {
  function bnpDLShiftTo (line 640) | function bnpDLShiftTo(n, r) {
  function bnpDRShiftTo (line 651) | function bnpDRShiftTo(n, r) {
  function bnpLShiftTo (line 660) | function bnpLShiftTo(n, r) {
  function bnpRShiftTo (line 679) | function bnpRShiftTo(n, r) {
  function bnpSubTo (line 702) | function bnpSubTo(a, r) {
  function bnpMultiplyTo (line 738) | function bnpMultiplyTo(a, r) {
  function bnpSquareTo (line 754) | function bnpSquareTo(r) {
  function bnpDivRemTo (line 775) | function bnpDivRemTo(m, q, r) {
  function bnMod (line 833) | function bnMod(a) {
  function Classic (line 841) | function Classic(m) {
  function cConvert (line 845) | function cConvert(x) {
  function cRevert (line 850) | function cRevert(x) {
  function cReduce (line 854) | function cReduce(x) {
  function cMulTo (line 858) | function cMulTo(x, y, r) {
  function cSqrTo (line 863) | function cSqrTo(x, r) {
  function bnpInvDigit (line 884) | function bnpInvDigit() {
  function Montgomery (line 901) | function Montgomery(m) {
  function montConvert (line 911) | function montConvert(x) {
  function montRevert (line 920) | function montRevert(x) {
  function montReduce (line 928) | function montReduce(x) {
  function montSqrTo (line 951) | function montSqrTo(x, r) {
  function montMulTo (line 957) | function montMulTo(x, y, r) {
  function bnpIsEven (line 969) | function bnpIsEven() {
  function bnpExp (line 975) | function bnpExp(e, z) {
  function bnModPowInt (line 992) | function bnModPowInt(e, m) {
  function bnClone (line 1034) | function bnClone() {
  function bnIntValue (line 1041) | function bnIntValue() {
  function bnByteValue (line 1053) | function bnByteValue() {
  function bnShortValue (line 1059) | function bnShortValue() {
  function bnpChunkSize (line 1065) | function bnpChunkSize(r) {
  function bnSigNum (line 1070) | function bnSigNum() {
  function bnpToRadix (line 1078) | function bnpToRadix(b) {
  function bnpFromRadix (line 1093) | function bnpFromRadix(s, b) {
  function bnpFromNumber (line 1120) | function bnpFromNumber(a, b, c) {
  function bnToByteArray (line 1145) | function bnToByteArray() {
  function bnEquals (line 1172) | function bnEquals(a) {
  function bnMin (line 1176) | function bnMin(a) {
  function bnMax (line 1180) | function bnMax(a) {
  function bnpBitwiseTo (line 1185) | function bnpBitwiseTo(a, op, r) {
  function op_and (line 1205) | function op_and(x, y) {
  function bnAnd (line 1209) | function bnAnd(a) {
  function op_or (line 1216) | function op_or(x, y) {
  function bnOr (line 1220) | function bnOr(a) {
  function op_xor (line 1227) | function op_xor(x, y) {
  function bnXor (line 1231) | function bnXor(a) {
  function op_andnot (line 1238) | function op_andnot(x, y) {
  function bnAndNot (line 1242) | function bnAndNot(a) {
  function bnNot (line 1249) | function bnNot() {
  function bnShiftLeft (line 1261) | function bnShiftLeft(n) {
  function bnShiftRight (line 1268) | function bnShiftRight(n) {
  function lbit (line 1275) | function lbit(x) {
  function bnGetLowestSetBit (line 1299) | function bnGetLowestSetBit() {
  function cbit (line 1308) | function cbit(x) {
  function bnBitCount (line 1318) | function bnBitCount() {
  function bnTestBit (line 1325) | function bnTestBit(n) {
  function bnpChangeBit (line 1333) | function bnpChangeBit(n, op) {
  function bnSetBit (line 1340) | function bnSetBit(n) {
  function bnClearBit (line 1345) | function bnClearBit(n) {
  function bnFlipBit (line 1350) | function bnFlipBit(n) {
  function bnpAddTo (line 1355) | function bnpAddTo(a, r) {
  function bnAdd (line 1390) | function bnAdd(a) {
  function bnSubtract (line 1397) | function bnSubtract(a) {
  function bnMultiply (line 1404) | function bnMultiply(a) {
  function bnDivide (line 1411) | function bnDivide(a) {
  function bnRemainder (line 1418) | function bnRemainder(a) {
  function bnDivideAndRemainder (line 1425) | function bnDivideAndRemainder(a) {
  function bnpDMultiply (line 1432) | function bnpDMultiply(n) {
  function bnpDAddOffset (line 1440) | function bnpDAddOffset(n, w) {
  function NullExp (line 1452) | function NullExp() {
  function nNop (line 1455) | function nNop(x) {
  function nMulTo (line 1459) | function nMulTo(x, y, r) {
  function nSqrTo (line 1463) | function nSqrTo(x, r) {
  function bnPow (line 1473) | function bnPow(e) {
  function bnpMultiplyLowerTo (line 1479) | function bnpMultiplyLowerTo(a, n, r) {
  function bnpMultiplyUpperTo (line 1494) | function bnpMultiplyUpperTo(a, n, r) {
  function Barrett (line 1508) | function Barrett(m) {
  function barrettConvert (line 1517) | function barrettConvert(x) {
  function barrettRevert (line 1528) | function barrettRevert(x) {
  function barrettReduce (line 1533) | function barrettReduce(x) {
  function barrettSqrTo (line 1547) | function barrettSqrTo(x, r) {
  function barrettMulTo (line 1553) | function barrettMulTo(x, y, r) {
  function bnModPow (line 1565) | function bnModPow(e, m) {
  function bnGCD (line 1644) | function bnGCD(a) {
  function bnpModInt (line 1675) | function bnpModInt(n) {
  function bnModInverse (line 1686) | function bnModInverse(m) {
  function bnIsProbablePrime (line 1734) | function bnIsProbablePrime(t) {
  function bnpMillerRabin (line 1754) | function bnpMillerRabin(t) {
  function Arcfour (line 1837) | function Arcfour() {
  function ARC4init (line 1844) | function ARC4init(key) {
  function ARC4next (line 1859) | function ARC4next() {
  function prng_newstate (line 1873) | function prng_newstate() {
  function rng_seed_int (line 1891) | function rng_seed_int(x) {
  function rng_seed_time (line 1900) | function rng_seed_time() {
  function rng_get_byte (line 1922) | function rng_get_byte() {
  function rng_get_bytes (line 1936) | function rng_get_bytes(ba) {
  function SecureRandom (line 1941) | function SecureRandom() {
  function parseBigInt (line 1948) | function parseBigInt(str, r) {
  function linebrk (line 1952) | function linebrk(s, n) {
  function byte2Hex (line 1962) | function byte2Hex(b) {
  function pkcs1pad2 (line 1970) | function pkcs1pad2(s, n) {
  function RSAKey (line 1992) | function RSAKey() {
  function RSASetPublic (line 2004) | function RSASetPublic(N, E) {
  function RSADoPublic (line 2013) | function RSADoPublic(x) {
  function RSAEncrypt (line 2018) | function RSAEncrypt(text) {
  function pkcs1unpad2 (line 2043) | function pkcs1unpad2(d, n) {
  function RSASetPrivate (line 2059) | function RSASetPrivate(N, E, D) {
  function RSASetPrivateEx (line 2069) | function RSASetPrivateEx(N, E, D, P, Q, DP, DQ, C) {
  function RSAGenerate (line 2084) | function RSAGenerate(B, E) {
  function RSADoPrivate (line 2118) | function RSADoPrivate(x) {
  function RSADecrypt (line 2133) | function RSADecrypt(ctext) {
  function encrypt (line 2173) | function encrypt() {
  function decrypt (line 2180) | function decrypt() {
  function Run (line 2199) | function Run() {
  function ShowProgress (line 2210) | function ShowProgress(name) {
  function AddError (line 2214) | function AddError(name, error) {
  function AddResult (line 2220) | function AddResult(name, result) {
  function AddScore (line 2224) | function AddScore(score) {
  function main (line 2228) | function main() {

FILE: benches/scripts/v8-benches/deltablue.js
  function Benchmark (line 39) | function Benchmark(name, run, setup, tearDown) {
  function BenchmarkResult (line 52) | function BenchmarkResult(benchmark, time) {
  function BenchmarkSuite (line 69) | function BenchmarkSuite(name, reference, benchmarks) {
  function RunStep (line 115) | function RunStep() {
  function Measure (line 207) | function Measure(data) {
  function RunNextSetup (line 252) | function RunNextSetup() {
  function RunNextBenchmark (line 266) | function RunNextBenchmark() {
  function RunNextTearDown (line 277) | function RunNextTearDown() {
  function Inheriter (line 335) | function Inheriter() {
  function OrderedCollection (line 343) | function OrderedCollection() {
  function Strength (line 388) | function Strength(strengthValue, name) {
  function Constraint (line 446) | function Constraint(strength) {
  function UnaryConstraint (line 505) | function UnaryConstraint(v, strength) {
  function StayConstraint (line 586) | function StayConstraint(v, str) {
  function EditConstraint (line 604) | function EditConstraint(v, str) {
  function BinaryConstraint (line 634) | function BinaryConstraint(var1, var2, strength) {
  function ScaleConstraint (line 748) | function ScaleConstraint(src, scale, offset, dest, strength) {
  function EqualityConstraint (line 807) | function EqualityConstraint(var1, var2, strength) {
  function Variable (line 830) | function Variable(name, initialValue) {
  function Planner (line 863) | function Planner() {
  function Plan (line 1050) | function Plan() {
  function chainTest (line 1090) | function chainTest(n) {
  function projectionTest (line 1124) | function projectionTest(n) {
  function change (line 1155) | function change(v, newValue) {
  function deltaBlue (line 1170) | function deltaBlue() {
  function Run (line 1182) | function Run() {
  function ShowProgress (line 1193) | function ShowProgress(name) {
  function AddError (line 1197) | function AddError(name, error) {
  function AddResult (line 1203) | function AddResult(name, result) {
  function AddScore (line 1207) | function AddScore(score) {
  function main (line 1211) | function main() {

FILE: benches/scripts/v8-benches/earley-boyer.js
  function Benchmark (line 39) | function Benchmark(name, run, setup, tearDown) {
  function BenchmarkResult (line 52) | function BenchmarkResult(benchmark, time) {
  function BenchmarkSuite (line 69) | function BenchmarkSuite(name, reference, benchmarks) {
  function RunStep (line 115) | function RunStep() {
  function Measure (line 207) | function Measure(data) {
  function RunNextSetup (line 252) | function RunNextSetup() {
  function RunNextBenchmark (line 266) | function RunNextBenchmark() {
  function RunNextTearDown (line 277) | function RunNextTearDown() {
  function sc_print_debug (line 332) | function sc_print_debug() {
  function sc_alert (line 343) | function sc_alert() {
  function sc_typeof (line 356) | function sc_typeof(x) {
  function sc_error (line 361) | function sc_error() {
  function sc_raise (line 372) | function sc_raise(obj) {
  function sc_withHandlerLambda (line 377) | function sc_withHandlerLambda(handler, body) {
  function sc_putpropBang (line 391) | function sc_putpropBang(sym, key, val) {
  function sc_getprop (line 401) | function sc_getprop(sym, key) {
  function sc_rempropBang (line 413) | function sc_rempropBang(sym, key) {
  function sc_any2String (line 420) | function sc_any2String(o) {
  function sc_isEqv (line 428) | function sc_isEqv(o1, o2) {
  function sc_isEq (line 436) | function sc_isEq(o1, o2) {
  function sc_isNumber (line 443) | function sc_isNumber(n) {
  function sc_isComplex (line 450) | function sc_isComplex(n) {
  function sc_isReal (line 457) | function sc_isReal(n) {
  function sc_isRational (line 464) | function sc_isRational(n) {
  function sc_isInteger (line 471) | function sc_isInteger(n) {
  function sc_isExact (line 480) | function sc_isExact(n) {
  function sc_isInexact (line 488) | function sc_isInexact(n) {
  function sc_equal (line 496) | function sc_equal(x) {
  function sc_less (line 507) | function sc_less(x) {
  function sc_greater (line 520) | function sc_greater(x, y) {
  function sc_lessEqual (line 533) | function sc_lessEqual(x, y) {
  function sc_greaterEqual (line 546) | function sc_greaterEqual(x, y) {
  function sc_isZero (line 559) | function sc_isZero(x) {
  function sc_isPositive (line 567) | function sc_isPositive(x) {
  function sc_isNegative (line 575) | function sc_isNegative(x) {
  function sc_isOdd (line 583) | function sc_isOdd(x) {
  function sc_isEven (line 591) | function sc_isEven(x) {
  function sc_plus (line 603) | function sc_plus() {
  function sc_multi (line 613) | function sc_multi() {
  function sc_minus (line 623) | function sc_minus(x) {
  function sc_div (line 637) | function sc_div(x) {
  function sc_quotient (line 654) | function sc_quotient(x, y) {
  function sc_remainder (line 661) | function sc_remainder(x, y) {
  function sc_modulo (line 668) | function sc_modulo(x, y) {
  function sc_euclid_gcd (line 677) | function sc_euclid_gcd(a, b) {
  function sc_gcd (line 712) | function sc_gcd() {
  function sc_lcm (line 720) | function sc_lcm() {
  function sc_exact2inexact (line 783) | function sc_exact2inexact(x) {
  function sc_inexact2exact (line 790) | function sc_inexact2exact(x) {
  function sc_number2jsstring (line 794) | function sc_number2jsstring(x, radix) {
  function sc_jsstring2number (line 801) | function sc_jsstring2number(s, radix) {
  function sc_not (line 828) | function sc_not(b) {
  function sc_isBoolean (line 835) | function sc_isBoolean(b) {
  function sc_Pair (line 839) | function sc_Pair(car, cdr) {
  function sc_isPair (line 881) | function sc_isPair(p) {
  function sc_isPairEqual (line 885) | function sc_isPairEqual(p1, p2, comp) {
  function sc_cons (line 892) | function sc_cons(car, cdr) {
  function sc_consStar (line 897) | function sc_consStar() {
  function sc_car (line 907) | function sc_car(p) {
  function sc_cdr (line 914) | function sc_cdr(p) {
  function sc_setCarBang (line 921) | function sc_setCarBang(p, val) {
  function sc_setCdrBang (line 928) | function sc_setCdrBang(p, val) {
  function sc_caar (line 935) | function sc_caar(p) {
  function sc_cadr (line 942) | function sc_cadr(p) {
  function sc_cdar (line 949) | function sc_cdar(p) {
  function sc_cddr (line 956) | function sc_cddr(p) {
  function sc_caaar (line 963) | function sc_caaar(p) {
  function sc_cadar (line 970) | function sc_cadar(p) {
  function sc_caadr (line 977) | function sc_caadr(p) {
  function sc_caddr (line 984) | function sc_caddr(p) {
  function sc_cdaar (line 991) | function sc_cdaar(p) {
  function sc_cdadr (line 998) | function sc_cdadr(p) {
  function sc_cddar (line 1005) | function sc_cddar(p) {
  function sc_cdddr (line 1012) | function sc_cdddr(p) {
  function sc_caaaar (line 1019) | function sc_caaaar(p) {
  function sc_caadar (line 1026) | function sc_caadar(p) {
  function sc_caaadr (line 1033) | function sc_caaadr(p) {
  function sc_caaddr (line 1040) | function sc_caaddr(p) {
  function sc_cdaaar (line 1047) | function sc_cdaaar(p) {
  function sc_cdadar (line 1054) | function sc_cdadar(p) {
  function sc_cdaadr (line 1061) | function sc_cdaadr(p) {
  function sc_cdaddr (line 1068) | function sc_cdaddr(p) {
  function sc_cadaar (line 1075) | function sc_cadaar(p) {
  function sc_caddar (line 1082) | function sc_caddar(p) {
  function sc_cadadr (line 1089) | function sc_cadadr(p) {
  function sc_cadddr (line 1096) | function sc_cadddr(p) {
  function sc_cddaar (line 1103) | function sc_cddaar(p) {
  function sc_cdddar (line 1110) | function sc_cdddar(p) {
  function sc_cddadr (line 1117) | function sc_cddadr(p) {
  function sc_cddddr (line 1124) | function sc_cddddr(p) {
  function sc_lastPair (line 1129) | function sc_lastPair(l) {
  function sc_isNull (line 1144) | function sc_isNull(o) {
  function sc_isList (line 1151) | function sc_isList(o) {
  function sc_list (line 1172) | function sc_list() {
  function sc_iota (line 1181) | function sc_iota(num, init) {
  function sc_makeList (line 1190) | function sc_makeList(nbEls, fill) {
  function sc_length (line 1198) | function sc_length(l) {
  function sc_remq (line 1208) | function sc_remq(o, l) {
  function sc_remqBang (line 1222) | function sc_remqBang(o, l) {
  function sc_delete (line 1243) | function sc_delete(o, l) {
  function sc_deleteBang (line 1257) | function sc_deleteBang(o, l) {
  function sc_reverseAppendBang (line 1277) | function sc_reverseAppendBang(l1, l2) {
  function sc_dualAppend (line 1288) | function sc_dualAppend(l1, l2) {
  function sc_append (line 1296) | function sc_append() {
  function sc_dualAppendBang (line 1305) | function sc_dualAppendBang(l1, l2) {
  function sc_appendBang (line 1315) | function sc_appendBang() {
  function sc_reverse (line 1323) | function sc_reverse(l1) {
  function sc_reverseBang (line 1333) | function sc_reverseBang(l) {
  function sc_listTail (line 1338) | function sc_listTail(l, k) {
  function sc_listRef (line 1347) | function sc_listRef(l, k) {
  function sc_memq (line 1367) | function sc_memq(o, l) {
  function sc_memv (line 1377) | function sc_memv(o, l) {
  function sc_member (line 1387) | function sc_member(o, l) {
  function sc_assq (line 1412) | function sc_assq(o, al) {
  function sc_assv (line 1422) | function sc_assv(o, al) {
  function sc_assoc (line 1432) | function sc_assoc(o, al) {
  function sc_isCharStringEqual (line 1442) | function sc_isCharStringEqual(cs1, cs2) {
  function sc_isCharStringLess (line 1446) | function sc_isCharStringLess(cs1, cs2) {
  function sc_isCharStringGreater (line 1450) | function sc_isCharStringGreater(cs1, cs2) {
  function sc_isCharStringLessEqual (line 1454) | function sc_isCharStringLessEqual(cs1, cs2) {
  function sc_isCharStringGreaterEqual (line 1458) | function sc_isCharStringGreaterEqual(cs1, cs2) {
  function sc_isCharStringCIEqual (line 1462) | function sc_isCharStringCIEqual(cs1, cs2) {
  function sc_isCharStringCILess (line 1466) | function sc_isCharStringCILess(cs1, cs2) {
  function sc_isCharStringCIGreater (line 1470) | function sc_isCharStringCIGreater(cs1, cs2) {
  function sc_isCharStringCILessEqual (line 1474) | function sc_isCharStringCILessEqual(cs1, cs2) {
  function sc_isCharStringCIGreaterEqual (line 1478) | function sc_isCharStringCIGreaterEqual(cs1, cs2) {
  function sc_Char (line 1483) | function sc_Char(c) {
  function sc_isChar (line 1595) | function sc_isChar(c) {
  function sc_isCharOfClass (line 1655) | function sc_isCharOfClass(c, cl) {
  function sc_isCharAlphabetic (line 1662) | function sc_isCharAlphabetic(c) {
  function sc_isCharNumeric (line 1671) | function sc_isCharNumeric(c) {
  function sc_isCharWhitespace (line 1678) | function sc_isCharWhitespace(c) {
  function sc_isCharUpperCase (line 1687) | function sc_isCharUpperCase(c) {
  function sc_isCharLowerCase (line 1695) | function sc_isCharLowerCase(c) {
  function sc_char2integer (line 1702) | function sc_char2integer(c) {
  function sc_integer2char (line 1709) | function sc_integer2char(n) {
  function sc_charUpcase (line 1716) | function sc_charUpcase(c) {
  function sc_charDowncase (line 1723) | function sc_charDowncase(c) {
  function sc_makeJSStringOfLength (line 1727) | function sc_makeJSStringOfLength(k, c) {
  function sc_makejsString (line 1745) | function sc_makejsString(k, c) {
  function sc_jsstring2list (line 1754) | function sc_jsstring2list(s) {
  function sc_list2jsstring (line 1761) | function sc_list2jsstring(l) {
  function sc_isVector (line 1792) | function sc_isVector(v) {
  function sc_isVectorEqual (line 1797) | function sc_isVectorEqual(v1, v2, comp) {
  function sc_makeVector (line 1805) | function sc_makeVector(size, fill) {
  function sc_vector (line 1815) | function sc_vector() {
  function sc_vectorLength (line 1825) | function sc_vectorLength(v) {
  function sc_vectorRef (line 1832) | function sc_vectorRef(v, pos) {
  function sc_vectorSetBang (line 1839) | function sc_vectorSetBang(v, pos, val) {
  function sc_vector2list (line 1844) | function sc_vector2list(a) {
  function sc_list2vector (line 1852) | function sc_list2vector(l) {
  function sc_vectorFillBang (line 1862) | function sc_vectorFillBang(a, fill) {
  function sc_copyVector (line 1869) | function sc_copyVector(a, len) {
  function sc_vectorCopy (line 1882) | function sc_vectorCopy(a, start, end) {
  function sc_vectorCopyBang (line 1887) | function sc_vectorCopyBang(target, tstart, source, sstart, send) {
  function sc_isProcedure (line 1911) | function sc_isProcedure(o) {
  function sc_apply (line 1916) | function sc_apply(proc) {
  function sc_map (line 1930) | function sc_map(proc, l1) {
  function sc_mapBang (line 1948) | function sc_mapBang(proc, l1) {
  function sc_forEach (line 1967) | function sc_forEach(proc, l1) {
  function sc_filter (line 1985) | function sc_filter(proc, l1) {
  function sc_filterBang (line 1999) | function sc_filterBang(proc, l1) {
  function sc_filterMap1 (line 2014) | function sc_filterMap1(proc, l1) {
  function sc_filterMap2 (line 2024) | function sc_filterMap2(proc, l1, l2) {
  function sc_filterMap (line 2036) | function sc_filterMap(proc, l1, l2, l3) {
  function sc_any (line 2057) | function sc_any(proc, l) {
  function sc_anyPred (line 2070) | function sc_anyPred(proc, l) {
  function sc_every (line 2075) | function sc_every(proc, l) {
  function sc_everyPred (line 2089) | function sc_everyPred(proc, l) {
  function sc_force (line 2098) | function sc_force(o) {
  function sc_makePromise (line 2103) | function sc_makePromise(proc) {
  function sc_Values (line 2118) | function sc_Values(values) {
  function sc_values (line 2125) | function sc_values() {
  function sc_callWithValues (line 2133) | function sc_callWithValues(producer, consumer) {
  function sc_dynamicWind (line 2142) | function sc_dynamicWind(before, thunk, after) {
  function sc_Struct (line 2159) | function sc_Struct(name) {
  function sc_makeStruct (line 2171) | function sc_makeStruct(name) {
  function sc_isStruct (line 2179) | function sc_isStruct(o) {
  function sc_isStructNamed (line 2187) | function sc_isStructNamed(name, s) {
  function sc_getStructField (line 2194) | function sc_getStructField(s, name, field) {
  function sc_setStructFieldBang (line 2201) | function sc_setStructFieldBang(s, name, field, val) {
  function sc_bitNot (line 2208) | function sc_bitNot(x) {
  function sc_bitAnd (line 2215) | function sc_bitAnd(x, y) {
  function sc_bitOr (line 2222) | function sc_bitOr(x, y) {
  function sc_bitXor (line 2229) | function sc_bitXor(x, y) {
  function sc_bitLsh (line 2236) | function sc_bitLsh(x, y) {
  function sc_bitRsh (line 2243) | function sc_bitRsh(x, y) {
  function sc_bitUrsh (line 2250) | function sc_bitUrsh(x, y) {
  function sc_jsField (line 2257) | function sc_jsField(o, field) {
  function sc_setJsFieldBang (line 2264) | function sc_setJsFieldBang(o, field, val) {
  function sc_deleteJsFieldBang (line 2271) | function sc_deleteJsFieldBang(o, field) {
  function sc_jsCall (line 2278) | function sc_jsCall(o, fun) {
  function sc_jsMethodCall (line 2288) | function sc_jsMethodCall(o, field) {
  function sc_jsNew (line 2298) | function sc_jsNew(c) {
  function sc_pregexp (line 2309) | function sc_pregexp(re) {
  function sc_pregexpMatch (line 2314) | function sc_pregexpMatch(re, s) {
  function sc_pregexpReplace (line 2332) | function sc_pregexpReplace(re, s1, s2) {
  function sc_pregexpReplaceAll (line 2350) | function sc_pregexpReplaceAll(re, s1, s2) {
  function sc_pregexpSplit (line 2368) | function sc_pregexpSplit(re, s) {
  function sc_random (line 2389) | function sc_random(n) {
  function sc_currentDate (line 2396) | function sc_currentDate() {
  function sc_Hashtable (line 2400) | function sc_Hashtable() {
  function sc_HashtableElement (line 2409) | function sc_HashtableElement(key, val) {
  function sc_makeHashtable (line 2417) | function sc_makeHashtable() {
  function sc_hashtablePutBang (line 2422) | function sc_hashtablePutBang(ht, key, val) {
  function sc_hashtableGet (line 2428) | function sc_hashtableGet(ht, key) {
  function sc_hashtableForEach (line 2437) | function sc_hashtableForEach(ht, f) {
  function sc_hashtableContains (line 2447) | function sc_hashtableContains(ht, key) {
  function sc_hash (line 2457) | function sc_hash(o) {
  function sc_counterHash (line 2476) | function sc_counterHash() {
  function sc_Trampoline (line 2484) | function sc_Trampoline(args, maxTailCalls) {
  function sc_bindExitLambda (line 2506) | function sc_bindExitLambda(proc) {
  function sc_BindExitException (line 2522) | function sc_BindExitException() {
  function sc_EOF (line 2536) | function sc_EOF() {
  function sc_Port (line 2541) | function sc_Port() {
  function sc_InputPort (line 2546) | function sc_InputPort() {
  function sc_ErrorInputPort (line 2569) | function sc_ErrorInputPort() {
  function sc_StringInputPort (line 2583) | function sc_StringInputPort(jsStr) {
  function sc_Token (line 2599) | function sc_Token(type, val, pos) {
  function sc_Tokenizer (line 2629) | function sc_Tokenizer(port) {
  function isNumberChar (line 2648) | function isNumberChar(c) {
  function isIdOrNumberChar (line 2652) | function isIdOrNumberChar(c) {
  function isWhitespace (line 2657) | function isWhitespace(c) {
  function isWhitespaceOrEOF (line 2661) | function isWhitespaceOrEOF(c) {
  function readString (line 2665) | function readString() {
  function readIdOrNumber (line 2742) | function readIdOrNumber(firstChar) {
  function skipWhitespaceAndComments (line 2752) | function skipWhitespaceAndComments() {
  function readDot (line 2771) | function readDot() {
  function readSharp (line 2778) | function readSharp() {
  function sc_Reader (line 2893) | function sc_Reader(tokenizer) {
  function readList (line 2899) | function readList(listBeginType) {
  function readQuote (line 2947) | function readQuote() {
  function readVector (line 2951) | function readVector() {
  function storeRefence (line 2968) | function storeRefence(nb) {
  function readReference (line 2974) | function readReference(nb) {
  function sc_read (line 3035) | function sc_read(port) {
  function sc_readChar (line 3043) | function sc_readChar(port) {
  function sc_peekChar (line 3051) | function sc_peekChar(port) {
  function sc_isCharReady (line 3061) | function sc_isCharReady(port) {
  function sc_closeInputPort (line 3070) | function sc_closeInputPort(p) {
  function sc_isInputPort (line 3078) | function sc_isInputPort(o) {
  function sc_isEOFObject (line 3086) | function sc_isEOFObject(o) {
  function sc_currentInputPort (line 3093) | function sc_currentInputPort() {
  function sc_callWithInputFile (line 3099) | function sc_callWithInputFile(s, proc) {
  function sc_callWithOutputFile (line 3104) | function sc_callWithOutputFile(s, proc) {
  function sc_withInputFromFile (line 3109) | function sc_withInputFromFile(s, thunk) {
  function sc_withOutputToFile (line 3114) | function sc_withOutputToFile(s, thunk) {
  function sc_openInputFile (line 3119) | function sc_openInputFile(s) {
  function sc_openOutputFile (line 3124) | function sc_openOutputFile(s) {
  function sc_basename (line 3130) | function sc_basename(p) {
  function sc_dirname (line 3140) | function sc_dirname(p) {
  function sc_withInputFromPort (line 3152) | function sc_withInputFromPort(p, thunk) {
  function sc_withInputFromString (line 3163) | function sc_withInputFromString(s, thunk) {
  function sc_withOutputToPort (line 3168) | function sc_withOutputToPort(p, thunk) {
  function sc_withOutputToString (line 3179) | function sc_withOutputToString(thunk) {
  function sc_withOutputToProcedure (line 3186) | function sc_withOutputToProcedure(proc, thunk) {
  function sc_openOutputString (line 3196) | function sc_openOutputString() {
  function sc_openInputString (line 3201) | function sc_openInputString(str) {
  function sc_OutputPort (line 3207) | function sc_OutputPort() {
  function sc_StringOutputPort (line 3218) | function sc_StringOutputPort() {
  function sc_getOutputString (line 3231) | function sc_getOutputString(sp) {
  function sc_ErrorOutputPort (line 3236) | function sc_ErrorOutputPort() {
  function sc_GenericOutputPort (line 3247) | function sc_GenericOutputPort(appendJSString, close) {
  function sc_isOutputPort (line 3259) | function sc_isOutputPort(o) {
  function sc_closeOutputPort (line 3266) | function sc_closeOutputPort(p) {
  function sc_write (line 3273) | function sc_write(o, p) {
  function sc_toWriteString (line 3279) | function sc_toWriteString(o) {
  function sc_escapeWriteString (line 3296) | function sc_escapeWriteString(s) {
  function sc_display (line 3366) | function sc_display(o, p) {
  function sc_toDisplayString (line 3372) | function sc_toDisplayString(o) {
  function sc_newline (line 3392) | function sc_newline(p) {
  function sc_writeChar (line 3401) | function sc_writeChar(c, p) {
  function sc_writeCircle (line 3410) | function sc_writeCircle(o, p) {
  function sc_toWriteCircleString (line 3416) | function sc_toWriteCircleString(o) {
  function sc_prepWriteCircle (line 3424) | function sc_prepWriteCircle(o, symb, nbPointer) {
  function sc_genToWriteCircleString (line 3446) | function sc_genToWriteCircleString(o, symb) {
  function sc_print (line 3532) | function sc_print(s) {
  function sc_format (line 3545) | function sc_format(s, args) {
  function sc_jsstring2string (line 3667) | function sc_jsstring2string(s) {
  function sc_jsstring2symbol (line 3674) | function sc_jsstring2symbol(s) {
  function sc_string2jsstring (line 3681) | function sc_string2jsstring(s) {
  function sc_symbol2jsstring (line 3688) | function sc_symbol2jsstring(s) {
  function sc_keyword2jsstring (line 3695) | function sc_keyword2jsstring(k) {
  function sc_jsstring2keyword (line 3702) | function sc_jsstring2keyword(s) {
  function sc_isKeyword (line 3709) | function sc_isKeyword(s) {
  function sc_isEqual (line 3729) | function sc_isEqual(o1, o2) {
  function sc_number2symbol (line 3738) | function sc_number2symbol(x, radix) {
  function sc_symbol2number (line 3746) | function sc_symbol2number(s, radix) {
  function sc_string2integer (line 3757) | function sc_string2integer(s, radix) {
  function sc_string2real (line 3765) | function sc_string2real(s) {
  function sc_isSymbol (line 3773) | function sc_isSymbol(s) {
  function sc_symbol2string (line 3781) | function sc_symbol2string(s) {
  function sc_string2symbol (line 3788) | function sc_string2symbol(s) {
  function sc_symbolAppend (line 3795) | function sc_symbolAppend() {
  function sc_char2string (line 3805) | function sc_char2string(c) {
  function sc_char2symbol (line 3812) | function sc_char2symbol(c) {
  function sc_isString (line 3819) | function sc_isString(s) {
  function sc_string (line 3829) | function sc_string() {
  function sc_stringLength (line 3838) | function sc_stringLength(s) {
  function sc_stringRef (line 3843) | function sc_stringRef(s, k) {
  function sc_isStringEqual (line 3856) | function sc_isStringEqual(s1, s2) {
  function sc_isStringLess (line 3864) | function sc_isStringLess(s1, s2) {
  function sc_isStringGreater (line 3872) | function sc_isStringGreater(s1, s2) {
  function sc_isStringLessEqual (line 3880) | function sc_isStringLessEqual(s1, s2) {
  function sc_isStringGreaterEqual (line 3888) | function sc_isStringGreaterEqual(s1, s2) {
  function sc_isStringCIEqual (line 3896) | function sc_isStringCIEqual(s1, s2) {
  function sc_isStringCILess (line 3904) | function sc_isStringCILess(s1, s2) {
  function sc_isStringCIGreater (line 3912) | function sc_isStringCIGreater(s1, s2) {
  function sc_isStringCILessEqual (line 3920) | function sc_isStringCILessEqual(s1, s2) {
  function sc_isStringCIGreaterEqual (line 3928) | function sc_isStringCIGreaterEqual(s1, s2) {
  function sc_substring (line 3935) | function sc_substring(s, start, end) {
  function sc_isSubstring_at (line 3941) | function sc_isSubstring_at(s1, s2, i) {
  function sc_stringAppend (line 3948) | function sc_stringAppend() {
  function sc_stringCopy (line 3961) | function sc_stringCopy(s) {
  function sc_keyword2string (line 3972) | function sc_keyword2string(o) {
  function sc_string2keyword (line 3979) | function sc_string2keyword(o) {
  function RunBenchmark (line 5155) | function RunBenchmark(name, count, run, warn) {
  function Run (line 5178) | function Run() {
  function ShowProgress (line 5189) | function ShowProgress(name) {
  function AddError (line 5193) | function AddError(name, error) {
  function AddResult (line 5199) | function AddResult(name, result) {
  function AddScore (line 5203) | function AddScore(score) {
  function main (line 5207) | function main() {

FILE: benches/scripts/v8-benches/navier-stokes.js
  function Benchmark (line 39) | function Benchmark(name, run, setup, tearDown) {
  function BenchmarkResult (line 52) | function BenchmarkResult(benchmark, time) {
  function BenchmarkSuite (line 69) | function BenchmarkSuite(name, reference, benchmarks) {
  function RunStep (line 115) | function RunStep() {
  function Measure (line 207) | function Measure(data) {
  function RunNextSetup (line 252) | function RunNextSetup() {
  function RunNextBenchmark (line 266) | function RunNextBenchmark() {
  function RunNextTearDown (line 277) | function RunNextTearDown() {
  function runNavierStokes (line 319) | function runNavierStokes() {
  function setupNavierStokes (line 323) | function setupNavierStokes() {
  function tearDownNavierStokes (line 333) | function tearDownNavierStokes() {
  function addPoints (line 337) | function addPoints(field) {
  function prepareFrame (line 352) | function prepareFrame(field) {
  function FluidField (line 363) | function FluidField(canvas) {
  function Run (line 686) | function Run() {
  function ShowProgress (line 697) | function ShowProgress(name) {
  function AddError (line 701) | function AddError(name, error) {
  function AddResult (line 707) | function AddResult(name, result) {
  function AddScore (line 711) | function AddScore(score) {
  function main (line 715) | function main() {

FILE: benches/scripts/v8-benches/raytrace.js
  function Benchmark (line 39) | function Benchmark(name, run, setup, tearDown) {
  function BenchmarkResult (line 52) | function BenchmarkResult(benchmark, time) {
  function BenchmarkSuite (line 69) | function BenchmarkSuite(name, reference, benchmarks) {
  function RunStep (line 115) | function RunStep() {
  function Measure (line 207) | function Measure(data) {
  function RunNextSetup (line 252) | function RunNextSetup() {
  function RunNextBenchmark (line 266) | function RunNextBenchmark() {
  function RunNextTearDown (line 277) | function RunNextTearDown() {
  function renderScene (line 1094) | function renderScene() {
  function Run (line 1197) | function Run() {
  function ShowProgress (line 1208) | function ShowProgress(name) {
  function AddError (line 1212) | function AddError(name, error) {
  function AddResult (line 1218) | function AddResult(name, result) {
  function AddScore (line 1222) | function AddScore(score) {
  function main (line 1226) | function main() {

FILE: benches/scripts/v8-benches/regexp.js
  function Benchmark (line 39) | function Benchmark(name, run, setup, tearDown) {
  function BenchmarkResult (line 52) | function BenchmarkResult(benchmark, time) {
  function BenchmarkSuite (line 69) | function BenchmarkSuite(name, reference, benchmarks) {
  function RunStep (line 115) | function RunStep() {
  function Measure (line 207) | function Measure(data) {
  function RunNextSetup (line 252) | function RunNextSetup() {
  function RunNextBenchmark (line 266) | function RunNextBenchmark() {
  function RunNextTearDown (line 277) | function RunNextTearDown() {
  function RegExpSetup (line 336) | function RegExpSetup() {
  function RegExpRun (line 341) | function RegExpRun() {
  function RegExpTearDown (line 345) | function RegExpTearDown() {
  function computeInputVariants (line 352) | function computeInputVariants(str, n) {
  function RegExpBenchmark (line 362) | function RegExpBenchmark() {
  function Run (line 2075) | function Run() {
  function ShowProgress (line 2086) | function ShowProgress(name) {
  function AddError (line 2090) | function AddError(name, error) {
  function AddResult (line 2096) | function AddResult(name, result) {
  function AddScore (line 2100) | function AddScore(score) {
  function main (line 2104) | function main() {

FILE: benches/scripts/v8-benches/richards.js
  function Benchmark (line 39) | function Benchmark(name, run, setup, tearDown) {
  function BenchmarkResult (line 52) | function BenchmarkResult(benchmark, time) {
  function BenchmarkSuite (line 69) | function BenchmarkSuite(name, reference, benchmarks) {
  function RunStep (line 115) | function RunStep() {
  function Measure (line 207) | function Measure(data) {
  function RunNextSetup (line 252) | function RunNextSetup() {
  function RunNextBenchmark (line 266) | function RunNextBenchmark() {
  function RunNextTearDown (line 277) | function RunNextTearDown() {
  function runRichards (line 333) | function runRichards() {
  function Scheduler (line 385) | function Scheduler() {
  function TaskControlBlock (line 546) | function TaskControlBlock(link, id, priority, queue, task) {
  function IdleTask (line 654) | function IdleTask(scheduler, v1, count) {
  function DeviceTask (line 682) | function DeviceTask(scheduler) {
  function WorkerTask (line 710) | function WorkerTask(scheduler, v1, v2) {
  function HandlerTask (line 745) | function HandlerTask(scheduler) {
  function Packet (line 801) | function Packet(link, id, kind) {
  function Run (line 834) | function Run() {
  function ShowProgress (line 845) | function ShowProgress(name) {
  function AddError (line 849) | function AddError(name, error) {
  function AddResult (line 855) | function AddResult(name, result) {
  function AddScore (line 859) | function AddScore(score) {
  function main (line 863) | function main() {

FILE: benches/scripts/v8-benches/splay.js
  function Benchmark (line 39) | function Benchmark(name, run, setup, tearDown) {
  function BenchmarkResult (line 52) | function BenchmarkResult(benchmark, time) {
  function BenchmarkSuite (line 69) | function BenchmarkSuite(name, reference, benchmarks) {
  function RunStep (line 115) | function RunStep() {
  function Measure (line 207) | function Measure(data) {
  function RunNextSetup (line 252) | function RunNextSetup() {
  function RunNextBenchmark (line 266) | function RunNextBenchmark() {
  function RunNextTearDown (line 277) | function RunNextTearDown() {
  function GeneratePayloadTree (line 334) | function GeneratePayloadTree(depth, tag) {
  function GenerateKey (line 349) | function GenerateKey() {
  function InsertNewNode (line 356) | function InsertNewNode() {
  function SplaySetup (line 368) | function SplaySetup() {
  function SplayTearDown (line 374) | function SplayTearDown() {
  function SplayRun (line 396) | function SplayRun() {
  function SplayTree (line 415) | function SplayTree() {
  function Run (line 689) | function Run() {
  function ShowProgress (line 700) | function ShowProgress(name) {
  function AddError (line 704) | function AddError(name, error) {
  function AddResult (line 710) | function AddResult(name, result) {
  function AddScore (line 714) | function AddScore(score) {
  function main (line 718) | function main() {

FILE: cli/src/debug/function.rs
  function flowgraph_parse_format_option (line 12) | fn flowgraph_parse_format_option(value: &JsValue) -> JsResult<FlowgraphF...
  function flowgraph_parse_direction_option (line 30) | fn flowgraph_parse_direction_option(value: &JsValue) -> JsResult<Directi...
  function flowgraph (line 51) | fn flowgraph(_this: &JsValue, args: &[JsValue], context: &mut Context) -...
  function bytecode (line 89) | fn bytecode(_: &JsValue, args: &[JsValue], _: &mut Context) -> JsResult<...
  function set_trace_flag_in_function_object (line 113) | fn set_trace_flag_in_function_object(object: &JsObject, value: bool) -> ...
  function trace (line 125) | fn trace(_: &JsValue, args: &[JsValue], context: &mut Context) -> JsResu...
  function traceable (line 144) | fn traceable(_: &JsValue, args: &[JsValue], _: &mut Context) -> JsResult...
  function create_object (line 159) | pub(super) fn create_object(context: &mut Context) -> JsObject {

FILE: cli/src/debug/gc.rs
  function collect (line 6) | fn collect(_: &JsValue, _: &[JsValue], _: &mut Context) -> JsResult<JsVa...
  function create_object (line 11) | pub(super) fn create_object(context: &mut Context) -> JsObject {

FILE: cli/src/debug/limits.rs
  function get_loop (line 7) | fn get_loop(_: &JsValue, _: &[JsValue], context: &mut Context) -> JsResu...
  function set_loop (line 12) | fn set_loop(_: &JsValue, args: &[JsValue], context: &mut Context) -> JsR...
  function get_stack (line 18) | fn get_stack(_: &JsValue, _: &[JsValue], context: &mut Context) -> JsRes...
  function set_stack (line 23) | fn set_stack(_: &JsValue, args: &[JsValue], context: &mut Context) -> Js...
  function get_recursion (line 34) | fn get_recursion(_: &JsValue, _: &[JsValue], context: &mut Context) -> J...
  function set_recursion (line 39) | fn set_recursion(_: &JsValue, args: &[JsValue], context: &mut Context) -...
  function get_backtrace (line 50) | fn get_backtrace(_: &JsValue, _: &[JsValue], context: &mut Context) -> J...
  function set_backtrace (line 55) | fn set_backtrace(_: &JsValue, args: &[JsValue], context: &mut Context) -...
  function create_object (line 66) | pub(super) fn create_object(context: &mut Context) -> JsObject {

FILE: cli/src/debug/mod.rs
  function create_boa_object (line 15) | fn create_boa_object(context: &mut Context) -> JsObject {
  function init_boa_debug_object (line 70) | pub(crate) fn init_boa_debug_object(context: &mut Context) {

FILE: cli/src/debug/object.rs
  function id (line 7) | fn id(_: &JsValue, args: &[JsValue], _: &mut Context) -> JsResult<JsValu...
  function indexed_storage_type (line 25) | fn indexed_storage_type(_: &JsValue, args: &[JsValue], _: &mut Context) ...
  function create_object (line 48) | pub(super) fn create_object(context: &mut Context) -> JsObject {

FILE: cli/src/debug/optimizer.rs
  function get_constant_folding (line 8) | fn get_constant_folding(_: &JsValue, _: &[JsValue], context: &mut Contex...
  function set_constant_folding (line 15) | fn set_constant_folding(_: &JsValue, args: &[JsValue], context: &mut Con...
  function get_statistics (line 23) | fn get_statistics(_: &JsValue, _: &[JsValue], context: &mut Context) -> ...
  function set_statistics (line 30) | fn set_statistics(_: &JsValue, args: &[JsValue], context: &mut Context) ...
  function create_object (line 38) | pub(super) fn create_object(context: &mut Context) -> JsObject {

FILE: cli/src/debug/realm.rs
  function create (line 6) | fn create(_: &JsValue, _: &[JsValue], _: &mut Context) -> JsResult<JsVal...
  function create_object (line 12) | pub(super) fn create_object(context: &mut Context) -> JsObject {

FILE: cli/src/debug/shape.rs
  function get_object (line 6) | fn get_object(args: &[JsValue], position: usize) -> JsResult<JsObject> {
  function id (line 22) | fn id(_: &JsValue, args: &[JsValue], _: &mut Context) -> JsResult<JsValu...
  function r#type (line 30) | fn r#type(_: &JsValue, args: &[JsValue], _: &mut Context) -> JsResult<Js...
  function same (line 44) | fn same(_: &JsValue, args: &[JsValue], _: &mut Context) -> JsResult<JsVa...
  function create_object (line 63) | pub(super) fn create_object(context: &mut Context) -> JsObject {

FILE: cli/src/debug/string.rs
  function storage (line 6) | fn storage(_: &JsValue, args: &[JsValue], _: &mut Context) -> JsResult<J...
  function encoding (line 23) | fn encoding(_: &JsValue, args: &[JsValue], _: &mut Context) -> JsResult<...
  function summary (line 44) | fn summary(_: &JsValue, args: &[JsValue], context: &mut Context) -> JsRe...
  function create_string (line 75) | pub(super) fn create_string(context: &mut Context) -> JsObject {

FILE: cli/src/executor.rs
  type Executor (line 18) | pub(crate) struct Executor {
    method new (line 29) | pub(crate) fn new(printer: SharedExternalPrinterLogger) -> Self {
    method clear (line 40) | pub(crate) fn clear(&self) {
    method is_empty (line 47) | fn is_empty(&self) -> bool {
    method drain_timeout_jobs (line 54) | fn drain_timeout_jobs(&self, context: &mut Context) {
    method drain_generic_jobs (line 77) | fn drain_generic_jobs(&self, context: &mut Context) {
  method enqueue_job (line 88) | fn enqueue_job(self: Rc<Self>, job: Job, context: &mut Context) {
  method run_jobs (line 108) | fn run_jobs(self: Rc<Self>, context: &mut Context) -> JsResult<()> {
  method run_jobs_async (line 112) | async fn run_jobs_async(self: Rc<Self>, context: &RefCell<&mut Context>)...

FILE: cli/src/helper.rs
  constant STRING_COLOR (line 14) | const STRING_COLOR: Color = Color::Green;
  constant KEYWORD_COLOR (line 15) | const KEYWORD_COLOR: Color = Color::Yellow;
  constant PROPERTY_COLOR (line 16) | const PROPERTY_COLOR: Color = Color::Magenta;
  constant OPERATOR_COLOR (line 17) | const OPERATOR_COLOR: Color = Color::TrueColor {
  constant UNDEFINED_COLOR (line 22) | const UNDEFINED_COLOR: Color = Color::TrueColor {
  constant NUMBER_COLOR (line 27) | const NUMBER_COLOR: Color = Color::TrueColor {
  constant IDENTIFIER_COLOR (line 32) | const IDENTIFIER_COLOR: Color = Color::TrueColor {
  constant READLINE_COLOR (line 38) | const READLINE_COLOR: Color = Color::Cyan;
  type RLHelper (line 42) | pub(crate) struct RLHelper {
    method new (line 49) | pub(crate) fn new(prompt: &str, strict: bool) -> Self {
  method validate (line 59) | fn validate(
  method validate_while_typing (line 83) | fn validate_while_typing(&self) -> bool {
  method highlight (line 89) | fn highlight<'l>(&self, line: &'l str, pos: usize) -> Cow<'l, str> {
  method highlight_prompt (line 95) | fn highlight_prompt<'b, 's: 'b, 'p: 'b>(
  method highlight_hint (line 107) | fn highlight_hint<'h>(&self, hint: &'h str) -> Cow<'h, str> {
  method highlight_candidate (line 111) | fn highlight_candidate<'c>(
  method highlight_char (line 119) | fn highlight_char(&self, line: &str, _: usize, _: CmdKind) -> bool {
  type LineHighlighter (line 161) | struct LineHighlighter {
    method new (line 166) | fn new() -> Self {
  method highlight (line 183) | fn highlight<'l>(&self, line: &'l str, _: usize) -> Cow<'l, str> {

FILE: cli/src/logger.rs
  type SharedExternalPrinterLogger (line 9) | pub(crate) struct SharedExternalPrinterLogger {
    method new (line 15) | pub(crate) fn new() -> Self {
    method set (line 21) | pub(crate) fn set<T: ExternalPrinter + Send + 'static>(&self, inner: T) {
    method print (line 28) | pub(crate) fn print(&self, message: String) {
  method fmt (line 39) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
  method log (line 46) | fn log(&self, msg: String, state: &ConsoleState, _context: &mut Context)...
  method info (line 53) | fn info(&self, msg: String, state: &ConsoleState, context: &mut Context)...
  method warn (line 58) | fn warn(&self, msg: String, state: &ConsoleState, context: &mut Context)...
  method error (line 63) | fn error(&self, msg: String, state: &ConsoleState, _context: &mut Contex...

FILE: cli/src/main.rs
  type Opt (line 92) | struct Opt {
    method has_dump_flag (line 176) | const fn has_dump_flag(&self) -> bool {
  type DumpFormat (line 183) | enum DumpFormat {
  type FlowgraphFormat (line 203) | enum FlowgraphFormat {
  type FlowgraphDirection (line 212) | enum FlowgraphDirection {
  type Timer (line 219) | struct Timer<'a> {
  method drop (line 226) | fn drop(&mut self) {
  type Counters (line 231) | struct Counters {
    method new (line 236) | fn new(enabled: bool) -> Self {
    method new_timer (line 242) | fn new_timer(&mut self, name: &'static str) -> Option<Timer<'_>> {
  method drop (line 252) | fn drop(&mut self) {
  function dump (line 288) | fn dump<R: ReadChar>(src: Source<'_, R>, args: &Opt, context: &mut Conte...
  function generate_flowgraph (line 339) | fn generate_flowgraph<R: ReadChar>(
  function uncaught_error (line 365) | fn uncaught_error(error: &JsError) -> String {
  function uncaught_job_error (line 374) | fn uncaught_job_error(error: &JsError) -> String {
  function evaluate_expr (line 382) | fn evaluate_expr(
  function evaluate_file (line 429) | fn evaluate_file(
  function evaluate_files (line 512) | fn evaluate_files(
  function main (line 525) | fn main() -> Result<()> {
  function readline_thread_main (line 679) | fn readline_thread_main(
  function start_readline_thread (line 774) | fn start_readline_thread(
  function add_runtime (line 789) | fn add_runtime(printer: SharedExternalPrinterLogger, context: &mut Conte...

FILE: core/ast/src/declaration/export.rs
  type ReExportKind (line 28) | pub enum ReExportKind {
  method visit_with (line 42) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 58) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type ExportDeclaration (line 83) | pub enum ExportDeclaration {
  method visit_with (line 114) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 152) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type ExportSpecifier (line 200) | pub struct ExportSpecifier {
    method new (line 210) | pub const fn new(alias: Sym, private_name: Sym, string_literal: bool) ...
    method alias (line 221) | pub const fn alias(self) -> Sym {
    method private_name (line 228) | pub const fn private_name(self) -> Sym {
    method string_literal (line 235) | pub const fn string_literal(&self) -> bool {
  method visit_with (line 241) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 249) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type ReExportImportName (line 264) | pub enum ReExportImportName {
  type ExportEntry (line 275) | pub enum ExportEntry {
    method from (line 290) | fn from(v: IndirectExportEntry) -> Self {
    method from (line 296) | fn from(v: LocalExportEntry) -> Self {
  type LocalExportEntry (line 303) | pub struct LocalExportEntry {
    method new (line 311) | pub const fn new(local_name: Sym, export_name: Sym) -> Self {
    method local_name (line 320) | pub const fn local_name(&self) -> Sym {
    method export_name (line 326) | pub const fn export_name(&self) -> Sym {
  type IndirectExportEntry (line 333) | pub struct IndirectExportEntry {
    method new (line 343) | pub fn new(
    method module_request (line 359) | pub const fn module_request(&self) -> Sym {
    method import_name (line 365) | pub const fn import_name(&self) -> ReExportImportName {
    method export_name (line 371) | pub const fn export_name(&self) -> Sym {
    method attributes (line 377) | pub fn attributes(&self) -> &[ImportAttribute] {

FILE: core/ast/src/declaration/import.rs
  type ImportKind (line 26) | pub enum ImportKind {
  method visit_with (line 42) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 58) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type ImportDeclaration (line 83) | pub struct ImportDeclaration {
    method new (line 98) | pub fn new(
    method default (line 115) | pub const fn default(&self) -> Option<Identifier> {
    method specifier (line 122) | pub const fn specifier(&self) -> ModuleSpecifier {
    method kind (line 129) | pub const fn kind(&self) -> &ImportKind {
    method attributes (line 136) | pub const fn attributes(&self) -> &[ImportAttribute] {
  method visit_with (line 142) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 157) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type ImportSpecifier (line 182) | pub struct ImportSpecifier {
    method new (line 191) | pub const fn new(binding: Identifier, export_name: Sym) -> Self {
    method binding (line 201) | pub const fn binding(self) -> Identifier {
    method export_name (line 208) | pub const fn export_name(self) -> Sym {
  method visit_with (line 214) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 222) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type ImportName (line 233) | pub enum ImportName {
  type ImportEntry (line 244) | pub struct ImportEntry {
    method new (line 254) | pub fn new(
    method module_request (line 270) | pub const fn module_request(&self) -> Sym {
    method import_name (line 276) | pub const fn import_name(&self) -> ImportName {
    method local_name (line 282) | pub const fn local_name(&self) -> Identifier {
    method attributes (line 288) | pub fn attributes(&self) -> &[ImportAttribute] {

FILE: core/ast/src/declaration/mod.rs
  type Declaration (line 41) | pub enum Declaration {
  method to_indented_string (line 62) | fn to_indented_string(&self, interner: &Interner, indentation: usize) ->...
  method visit_with (line 79) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 93) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type ModuleSpecifier (line 118) | pub struct ModuleSpecifier {
    method new (line 125) | pub const fn new(module: Sym) -> Self {
    method sym (line 132) | pub const fn sym(self) -> Sym {
    method from (line 139) | fn from(module: Sym) -> Self {
  method visit_with (line 145) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 152) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type ImportAttribute (line 172) | pub struct ImportAttribute {
    method new (line 181) | pub const fn new(key: Sym, value: Sym) -> Self {
    method key (line 188) | pub const fn key(self) -> Sym {
    method value (line 195) | pub const fn value(self) -> Sym {
  method visit_with (line 201) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 209) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/declaration/variable.rs
  type VarDeclaration (line 46) | pub struct VarDeclaration(pub VariableList);
  method from (line 49) | fn from(var: VarDeclaration) -> Self {
  method to_interned_string (line 55) | fn to_interned_string(&self, interner: &Interner) -> String {
  method visit_with (line 61) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 68) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type LexicalDeclaration (line 83) | pub enum LexicalDeclaration {
    method variable_list (line 121) | pub const fn variable_list(&self) -> &VariableList {
    method is_const (line 131) | pub const fn is_const(&self) -> bool {
  method from (line 137) | fn from(lex: LexicalDeclaration) -> Self {
  method to_interned_string (line 143) | fn to_interned_string(&self, interner: &Interner) -> String {
  method visit_with (line 158) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 169) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type VariableList (line 185) | pub struct VariableList {
    method new (line 192) | pub fn new(list: Box<[Variable]>) -> Option<Self> {
    method as_ref (line 202) | fn as_ref(&self) -> &[Variable] {
    type Error (line 246) | type Error = TryFromVariableListError;
    method try_from (line 248) | fn try_from(value: Box<[Variable]>) -> Result<Self, Self::Error> {
    type Error (line 254) | type Error = TryFromVariableListError;
    method try_from (line 256) | fn try_from(value: Vec<Variable>) -> Result<Self, Self::Error> {
  method to_interned_string (line 208) | fn to_interned_string(&self, interner: &Interner) -> String {
  method visit_with (line 214) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 224) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type TryFromVariableListError (line 237) | pub struct TryFromVariableListError(());
    method fmt (line 240) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
  type Variable (line 276) | pub struct Variable {
    method from_identifier (line 296) | pub const fn from_identifier(ident: Identifier, init: Option<Expressio...
    method from_pattern (line 306) | pub const fn from_pattern(pattern: Pattern, init: Option<Expression>) ...
    method binding (line 314) | pub const fn binding(&self) -> &Binding {
    method init (line 321) | pub const fn init(&self) -> Option<&Expression> {
  method to_interned_string (line 282) | fn to_interned_string(&self, interner: &Interner) -> String {
  method visit_with (line 327) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 338) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type Binding (line 359) | pub enum Binding {
    method from (line 367) | fn from(id: Identifier) -> Self {
    method from (line 373) | fn from(pat: Pattern) -> Self {
  method to_interned_string (line 379) | fn to_interned_string(&self, interner: &Interner) -> String {
  method visit_with (line 388) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 398) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/expression/access.rs
  type PropertyAccessField (line 32) | pub enum PropertyAccessField {
    method from (line 51) | fn from(id: Identifier) -> Self {
    method from (line 58) | fn from(expr: Expression) -> Self {
  method span (line 41) | fn span(&self) -> Span {
  method visit_with (line 64) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 74) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type PropertyAccess (line 91) | pub enum PropertyAccess {
    method from (line 213) | fn from(access: SimplePropertyAccess) -> Self {
    method from (line 302) | fn from(access: PrivatePropertyAccess) -> Self {
    method from (line 378) | fn from(access: SuperPropertyAccess) -> Self {
  method span (line 102) | fn span(&self) -> Span {
  method to_interned_string (line 113) | fn to_interned_string(&self, interner: &Interner) -> String {
  method from (line 124) | fn from(access: PropertyAccess) -> Self {
  method visit_with (line 130) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 141) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type SimplePropertyAccess (line 157) | pub struct SimplePropertyAccess {
    method target (line 166) | pub const fn target(&self) -> &Expression {
    method field (line 173) | pub const fn field(&self) -> &PropertyAccessField {
    method new (line 178) | pub fn new<F>(target: Expression, field: F) -> Self
  method span (line 191) | fn span(&self) -> Span {
  method to_interned_string (line 198) | fn to_interned_string(&self, interner: &Interner) -> String {
  method visit_with (line 219) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 227) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type PrivatePropertyAccess (line 249) | pub struct PrivatePropertyAccess {
    method new (line 259) | pub fn new(value: Expression, field: PrivateName, span: Span) -> Self {
    method target (line 270) | pub const fn target(&self) -> &Expression {
    method field (line 277) | pub const fn field(&self) -> PrivateName {
  method span (line 284) | fn span(&self) -> Span {
  method to_interned_string (line 291) | fn to_interned_string(&self, interner: &Interner) -> String {
  method visit_with (line 308) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 316) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type SuperPropertyAccess (line 335) | pub struct SuperPropertyAccess {
    method new (line 343) | pub const fn new(field: PropertyAccessField, span: Span) -> Self {
    method field (line 350) | pub const fn field(&self) -> &PropertyAccessField {
  method span (line 357) | fn span(&self) -> Span {
  method to_interned_string (line 364) | fn to_interned_string(&self, interner: &Interner) -> String {
  method visit_with (line 384) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 391) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/expression/await.rs
  type Await (line 24) | pub struct Await {
    method new (line 32) | pub const fn new(target: Box<Expression>, span: Span) -> Self {
    method target (line 39) | pub const fn target(&self) -> &Expression {
  method span (line 46) | fn span(&self) -> Span {
  method to_interned_string (line 53) | fn to_interned_string(&self, interner: &Interner) -> String {
  method from (line 60) | fn from(awaitexpr: Await) -> Self {
  method visit_with (line 66) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 73) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/expression/call.rs
  type Call (line 25) | pub struct Call {
    method new (line 35) | pub fn new(function: Expression, args: Box<[Expression]>, span: Span) ...
    method function (line 46) | pub const fn function(&self) -> &Expression {
    method args (line 53) | pub const fn args(&self) -> &[Expression] {
  method span (line 60) | fn span(&self) -> Span {
  method to_interned_string (line 67) | fn to_interned_string(&self, interner: &Interner) -> String {
  method from (line 78) | fn from(call: Call) -> Self {
  method visit_with (line 84) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 95) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type SuperCall (line 118) | pub struct SuperCall {
    method new (line 125) | pub fn new<A>(args: A, span: Span) -> Self
    method arguments (line 137) | pub const fn arguments(&self) -> &[Expression] {
  method span (line 144) | fn span(&self) -> Span {
  method to_interned_string (line 151) | fn to_interned_string(&self, interner: &Interner) -> String {
  method from (line 158) | fn from(call: SuperCall) -> Self {
  method visit_with (line 164) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 174) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type ImportPhase (line 201) | pub enum ImportPhase {
  type ImportCall (line 224) | pub struct ImportCall {
    method new (line 235) | pub fn new<S>(specifier: S, options: Option<Expression>, phase: Import...
    method specifier (line 250) | pub const fn specifier(&self) -> &Expression {
    method options (line 262) | pub fn options(&self) -> Option<&Expression> {
    method phase (line 269) | pub const fn phase(&self) -> ImportPhase {
    method argument (line 279) | pub const fn argument(&self) -> &Expression {
  method span (line 286) | fn span(&self) -> Span {
  method to_interned_string (line 293) | fn to_interned_string(&self, interner: &Interner) -> String {
  method from (line 318) | fn from(call: ImportCall) -> Self {
  method visit_with (line 324) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 335) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/expression/identifier.rs
  constant RESERVED_IDENTIFIERS_STRICT (line 13) | pub const RESERVED_IDENTIFIERS_STRICT: [Sym; 9] = [
  type Identifier (line 44) | pub struct Identifier {
    method eq (line 51) | fn eq(&self, other: &Sym) -> bool {
    method new (line 67) | pub const fn new(ident: Sym, span: Span) -> Self {
    method sym (line 74) | pub const fn sym(self) -> Sym {
    method sym_ref (line 81) | pub const fn sym_ref(&self) -> &Sym {
    method sym_mut (line 88) | pub const fn sym_mut(&mut self) -> &mut Sym {
  method eq (line 58) | fn eq(&self, other: &Identifier) -> bool {
  method span (line 95) | fn span(&self) -> Span {
  method to_interned_string (line 102) | fn to_interned_string(&self, interner: &Interner) -> String {
  method from (line 113) | fn from(local: Identifier) -> Self {
  method visit_with (line 119) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 126) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/expression/import_meta.rs
  type ImportMeta (line 16) | pub struct ImportMeta {
    method new (line 24) | pub const fn new(span: Span) -> Self {
  method span (line 31) | fn span(&self) -> Span {
  method from (line 38) | fn from(value: ImportMeta) -> Self {
  method to_interned_string (line 45) | fn to_interned_string(&self, _interner: &Interner) -> String {
  method visit_with (line 51) | fn visit_with<'a, V>(&'a self, _visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 58) | fn visit_with_mut<'a, V>(&'a mut self, _visitor: &mut V) -> ControlFlow<...

FILE: core/ast/src/expression/literal/array.rs
  type ArrayLiteral (line 30) | pub struct ArrayLiteral {
    method new (line 38) | pub fn new<A>(array: A, has_trailing_comma_spread: bool, span: Span) -...
    method has_trailing_comma_spread (line 52) | pub const fn has_trailing_comma_spread(&self) -> bool {
    method to_pattern (line 58) | pub fn to_pattern(&self, strict: bool) -> Option<ArrayPattern> {
    method as_ref (line 175) | fn as_ref(&self) -> &[Option<Expression>] {
    method as_mut (line 182) | fn as_mut(&mut self) -> &mut [Option<Expression>] {
  method span (line 168) | fn span(&self) -> Span {
  method to_interned_string (line 189) | fn to_interned_string(&self, interner: &Interner) -> String {
  method from (line 212) | fn from(arr: ArrayLiteral) -> Self {
  method visit_with (line 218) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 228) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/expression/literal/mod.rs
  type Literal (line 41) | pub struct Literal {
    method new (line 51) | pub fn new<T: Into<LiteralKind>>(kind: T, span: Span) -> Self {
    method with_linear_span (line 62) | pub fn with_linear_span<T: Into<LiteralKind>>(
    method kind (line 77) | pub const fn kind(&self) -> &LiteralKind {
    method kind_mut (line 84) | pub const fn kind_mut(&mut self) -> &mut LiteralKind {
    method linear_span (line 91) | pub const fn linear_span(&self) -> LinearSpan {
    method as_string (line 98) | pub const fn as_string(&self) -> Option<Sym> {
    method is_undefined (line 108) | pub const fn is_undefined(&self) -> bool {
  method span (line 115) | fn span(&self) -> Span {
  method from (line 122) | fn from(lit: Literal) -> Self {
  method to_interned_string (line 129) | fn to_interned_string(&self, interner: &Interner) -> String {
  method visit_with (line 135) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 146) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type LiteralKind (line 170) | pub enum LiteralKind {
    method arbitrary (line 256) | fn arbitrary(u: &mut arbitrary::Unstructured<'a>) -> arbitrary::Result...
    method from (line 274) | fn from(string: Sym) -> Self {
    method from (line 281) | fn from(num: f64) -> Self {
    method from (line 288) | fn from(i: i32) -> Self {
    method from (line 295) | fn from(i: BigInt) -> Self {
    method from (line 302) | fn from(i: Box<BigInt>) -> Self {
    method from (line 309) | fn from(b: bool) -> Self {
  method to_interned_string (line 316) | fn to_interned_string(&self, interner: &Interner) -> String {

FILE: core/ast/src/expression/literal/object.rs
  type ObjectLiteral (line 42) | pub struct ObjectLiteral {
    method new (line 51) | pub fn new<T>(properties: T, span: Span) -> Self
    method properties (line 64) | pub const fn properties(&self) -> &[PropertyDefinition] {
    method to_pattern (line 70) | pub fn to_pattern(&self, strict: bool) -> Option<ObjectPattern> {
  method span (line 226) | fn span(&self) -> Span {
  method to_indented_string (line 232) | fn to_indented_string(&self, interner: &Interner, indent_n: usize) -> St...
  method from (line 276) | fn from(obj: ObjectLiteral) -> Self {
  method visit_with (line 282) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 292) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type PropertyDefinition (line 319) | pub enum PropertyDefinition {
  method visit_with (line 373) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 392) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type ObjectMethodDefinition (line 423) | pub struct ObjectMethodDefinition {
    method new (line 439) | pub fn new(
    method name (line 464) | pub const fn name(&self) -> &PropertyName {
    method parameters (line 471) | pub const fn parameters(&self) -> &FormalParameterList {
    method body (line 478) | pub const fn body(&self) -> &FunctionBody {
    method kind (line 485) | pub const fn kind(&self) -> MethodDefinitionKind {
    method scopes (line 492) | pub const fn scopes(&self) -> &FunctionScopes {
    method linear_span (line 499) | pub const fn linear_span(&self) -> LinearSpan {
    method contains_direct_eval (line 506) | pub const fn contains_direct_eval(&self) -> bool {
  method to_indented_string (line 512) | fn to_indented_string(&self, interner: &Interner, indent_n: usize) -> St...
  method visit_with (line 530) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 539) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/expression/literal/template.rs
  type TemplateLiteral (line 21) | pub struct TemplateLiteral {
    method arbitrary (line 29) | fn arbitrary(u: &mut arbitrary::Unstructured<'a>) -> arbitrary::Result...
    method new (line 58) | pub fn new(elements: Box<[TemplateElement]>, span: Span) -> Self {
    method elements (line 64) | pub const fn elements(&self) -> &[TemplateElement] {
  method from (line 49) | fn from(tem: TemplateLiteral) -> Self {
  method span (line 71) | fn span(&self) -> Span {
  method to_interned_string (line 78) | fn to_interned_string(&self, interner: &Interner) -> String {
  method visit_with (line 98) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 108) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type TemplateElement (line 128) | pub enum TemplateElement {
  method visit_with (line 136) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 146) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/expression/mod.rs
  type Expression (line 71) | pub enum Expression {
    method to_no_indent_string (line 188) | pub(crate) fn to_no_indent_string(&self, interner: &Interner, indentat...
    method is_anonymous_function_definition (line 236) | pub const fn is_anonymous_function_definition(&self) -> bool {
    method set_anonymous_function_definition_name (line 254) | pub fn set_anonymous_function_definition_name(&mut self, name: &Identi...
    method flatten (line 271) | pub const fn flatten(&self) -> &Self {
  method span (line 282) | fn span(&self) -> Span {
  method from (line 323) | fn from(expr: Expression) -> Self {
  method to_indented_string (line 330) | fn to_indented_string(&self, interner: &Interner, indentation: usize) ->...
  method visit_with (line 336) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 377) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/expression/new.rs
  type New (line 27) | pub struct New {
    method constructor (line 35) | pub const fn constructor(&self) -> &Expression {
    method arguments (line 42) | pub const fn arguments(&self) -> &[Expression] {
    method call (line 48) | pub const fn call(&self) -> &Call {
    method from (line 55) | fn from(call: Call) -> Self {
  method span (line 62) | fn span(&self) -> Span {
  method to_interned_string (line 69) | fn to_interned_string(&self, interner: &Interner) -> String {
  method from (line 76) | fn from(new: New) -> Self {
  method visit_with (line 82) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 89) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/expression/new_target.rs
  type NewTarget (line 16) | pub struct NewTarget {
    method new (line 24) | pub const fn new(span: Span) -> Self {
  method span (line 31) | fn span(&self) -> Span {
  method from (line 38) | fn from(value: NewTarget) -> Self {
  method to_interned_string (line 45) | fn to_interned_string(&self, _interner: &Interner) -> String {
  method visit_with (line 51) | fn visit_with<'a, V>(&'a self, _visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 58) | fn visit_with_mut<'a, V>(&'a mut self, _visitor: &mut V) -> ControlFlow<...

FILE: core/ast/src/expression/operator/assign/mod.rs
  type Assign (line 35) | pub struct Assign {
    method new (line 45) | pub fn new(op: AssignOp, lhs: AssignTarget, rhs: Expression) -> Self {
    method op (line 56) | pub const fn op(&self) -> AssignOp {
    method lhs (line 63) | pub const fn lhs(&self) -> &AssignTarget {
    method rhs (line 70) | pub const fn rhs(&self) -> &Expression {
  method span (line 77) | fn span(&self) -> Span {
  method to_interned_string (line 84) | fn to_interned_string(&self, interner: &Interner) -> String {
  method from (line 96) | fn from(op: Assign) -> Self {
  method visit_with (line 102) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 110) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type AssignTarget (line 126) | pub enum AssignTarget {
    method from_expression (line 139) | pub fn from_expression(expression: &Expression, strict: bool) -> Optio...
    method from_expression_simple (line 158) | pub fn from_expression_simple(expression: &Expression, strict: bool) -...
    method from (line 197) | fn from(target: Identifier) -> Self {
  method span (line 175) | fn span(&self) -> Span {
  method to_interned_string (line 186) | fn to_interned_string(&self, interner: &Interner) -> String {
  method visit_with (line 203) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 214) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/expression/operator/assign/op.rs
  type AssignOp (line 17) | pub enum AssignOp {
    method as_str (line 218) | const fn as_str(self) -> &'static str {
    method fmt (line 242) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {

FILE: core/ast/src/expression/operator/binary/mod.rs
  type Binary (line 36) | pub struct Binary {
    method new (line 46) | pub fn new(op: BinaryOp, lhs: Expression, rhs: Expression) -> Self {
    method op (line 57) | pub const fn op(&self) -> BinaryOp {
    method lhs (line 64) | pub const fn lhs(&self) -> &Expression {
    method rhs (line 71) | pub const fn rhs(&self) -> &Expression {
    method lhs_mut (line 78) | pub fn lhs_mut(&mut self) -> &mut Expression {
    method rhs_mut (line 85) | pub fn rhs_mut(&mut self) -> &mut Expression {
  method span (line 92) | fn span(&self) -> Span {
  method to_interned_string (line 99) | fn to_interned_string(&self, interner: &Interner) -> String {
  method from (line 111) | fn from(op: Binary) -> Self {
  method visit_with (line 117) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 125) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type BinaryInPrivate (line 142) | pub struct BinaryInPrivate {
    method new (line 151) | pub fn new(lhs: PrivateName, rhs: Expression) -> Self {
    method lhs (line 161) | pub const fn lhs(&self) -> &PrivateName {
    method rhs (line 168) | pub const fn rhs(&self) -> &Expression {
  method span (line 175) | fn span(&self) -> Span {
  method to_interned_string (line 182) | fn to_interned_string(&self, interner: &Interner) -> String {
  method from (line 193) | fn from(op: BinaryInPrivate) -> Self {
  method visit_with (line 199) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 207) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/expression/operator/binary/op.rs
  type BinaryOp (line 9) | pub enum BinaryOp {
    method from (line 36) | fn from(op: ArithmeticOp) -> Self {
    method from (line 43) | fn from(op: BitwiseOp) -> Self {
    method from (line 50) | fn from(op: RelationalOp) -> Self {
    method from (line 57) | fn from(op: LogicalOp) -> Self {
    method as_str (line 64) | const fn as_str(self) -> &'static str {
  method fmt (line 77) | fn fmt(&self, f: &mut Formatter<'_>) -> Result {
  type ArithmeticOp (line 92) | pub enum ArithmeticOp {
    method as_str (line 174) | const fn as_str(self) -> &'static str {
  method fmt (line 188) | fn fmt(&self, f: &mut Formatter<'_>) -> Result {
  type BitwiseOp (line 203) | pub enum BitwiseOp {
    method as_str (line 290) | const fn as_str(self) -> &'static str {
  method fmt (line 304) | fn fmt(&self, f: &mut Formatter<'_>) -> Result {
  type RelationalOp (line 327) | pub enum RelationalOp {
    method as_str (line 484) | const fn as_str(self) -> &'static str {
  method fmt (line 502) | fn fmt(&self, f: &mut Formatter<'_>) -> Result {
  type LogicalOp (line 521) | pub enum LogicalOp {
    method as_str (line 564) | const fn as_str(self) -> &'static str {
  method fmt (line 575) | fn fmt(&self, f: &mut Formatter<'_>) -> Result {

FILE: core/ast/src/expression/operator/conditional.rs
  type Conditional (line 26) | pub struct Conditional {
    method condition (line 36) | pub const fn condition(&self) -> &Expression {
    method if_true (line 43) | pub const fn if_true(&self) -> &Expression {
    method if_false (line 50) | pub const fn if_false(&self) -> &Expression {
    method new (line 57) | pub fn new(condition: Expression, if_true: Expression, if_false: Expre...
  method span (line 68) | fn span(&self) -> Span {
  method to_interned_string (line 75) | fn to_interned_string(&self, interner: &Interner) -> String {
  method from (line 87) | fn from(cond_op: Conditional) -> Self {
  method visit_with (line 93) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 102) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/expression/operator/unary/mod.rs
  type Unary (line 35) | pub struct Unary {
    method new (line 45) | pub fn new(op: UnaryOp, target: Expression, span: Span) -> Self {
    method op (line 56) | pub const fn op(&self) -> UnaryOp {
    method target (line 63) | pub fn target(&self) -> &Expression {
    method target_mut (line 70) | pub fn target_mut(&mut self) -> &mut Expression {
  method span (line 77) | fn span(&self) -> Span {
  method to_interned_string (line 84) | fn to_interned_string(&self, interner: &Interner) -> String {
  method from (line 91) | fn from(op: Unary) -> Self {
  method visit_with (line 97) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 104) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/expression/operator/unary/op.rs
  type UnaryOp (line 16) | pub enum UnaryOp {
    method as_str (line 140) | const fn as_str(self) -> &'static str {
    method fmt (line 155) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {

FILE: core/ast/src/expression/operator/update/mod.rs
  type Update (line 33) | pub struct Update {
    method new (line 43) | pub fn new(op: UpdateOp, target: UpdateTarget, span: Span) -> Self {
    method op (line 54) | pub const fn op(&self) -> UpdateOp {
    method target (line 61) | pub fn target(&self) -> &UpdateTarget {
  method span (line 68) | fn span(&self) -> Span {
  method to_interned_string (line 75) | fn to_interned_string(&self, interner: &Interner) -> String {
  method from (line 89) | fn from(op: Update) -> Self {
  method visit_with (line 95) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 105) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type UpdateTarget (line 127) | pub enum UpdateTarget {
  method to_interned_string (line 137) | fn to_interned_string(&self, interner: &Interner) -> String {

FILE: core/ast/src/expression/operator/update/op.rs
  type UpdateOp (line 12) | pub enum UpdateOp {
    method as_str (line 72) | const fn as_str(self) -> &'static str {
    method fmt (line 82) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {

FILE: core/ast/src/expression/optional.rs
  type OptionalOperationKind (line 15) | pub enum OptionalOperationKind {
  method visit_with (line 34) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 50) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type OptionalOperation (line 76) | pub struct OptionalOperation {
    method new (line 86) | pub const fn new(kind: OptionalOperationKind, shorted: bool, span: Spa...
    method kind (line 96) | pub const fn kind(&self) -> &OptionalOperationKind {
    method shorted (line 104) | pub const fn shorted(&self) -> bool {
  method span (line 111) | fn span(&self) -> Span {
  method to_interned_string (line 117) | fn to_interned_string(&self, interner: &Interner) -> String {
  method visit_with (line 155) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 162) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type Optional (line 195) | pub struct Optional {
    method new (line 205) | pub fn new(target: Expression, chain: Box<[OptionalOperation]>, span: ...
    method target (line 216) | pub fn target(&self) -> &Expression {
    method chain (line 223) | pub fn chain(&self) -> &[OptionalOperation] {
  method span (line 230) | fn span(&self) -> Span {
  method from (line 236) | fn from(opt: Optional) -> Self {
  method to_interned_string (line 242) | fn to_interned_string(&self, interner: &Interner) -> String {
  method visit_with (line 254) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 265) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/expression/parenthesized.rs
  type Parenthesized (line 20) | pub struct Parenthesized {
    method new (line 29) | pub fn new(expression: Expression, span: Span) -> Self {
    method expression (line 39) | pub const fn expression(&self) -> &Expression {
  method span (line 46) | fn span(&self) -> Span {
  method from (line 52) | fn from(p: Parenthesized) -> Self {
  method to_interned_string (line 59) | fn to_interned_string(&self, interner: &Interner) -> String {
  method visit_with (line 65) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 72) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/expression/regexp.rs
  type RegExpLiteral (line 32) | pub struct RegExpLiteral {
    method new (line 42) | pub const fn new(pattern: Sym, flags: Sym, span: Span) -> Self {
    method pattern (line 53) | pub const fn pattern(&self) -> Sym {
    method flags (line 60) | pub const fn flags(&self) -> Sym {
  method span (line 67) | fn span(&self) -> Span {
  method to_interned_string (line 74) | fn to_interned_string(&self, interner: &Interner) -> String {
  method from (line 83) | fn from(value: RegExpLiteral) -> Self {
  method visit_with (line 90) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 99) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/expression/spread.rs
  type Spread (line 30) | pub struct Spread {
    method new (line 39) | pub fn new(target: Expression, span: Span) -> Self {
    method target (line 49) | pub const fn target(&self) -> &Expression {
  method span (line 56) | fn span(&self) -> Span {
  method to_interned_string (line 63) | fn to_interned_string(&self, interner: &Interner) -> String {
  method from (line 70) | fn from(spread: Spread) -> Self {
  method visit_with (line 76) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 83) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/expression/tagged_template.rs
  type TaggedTemplate (line 19) | pub struct TaggedTemplate {
    method new (line 33) | pub fn new(
    method tag (line 54) | pub const fn tag(&self) -> &Expression {
    method raws (line 61) | pub const fn raws(&self) -> &[Sym] {
    method cookeds (line 68) | pub const fn cookeds(&self) -> &[Option<Sym>] {
    method exprs (line 75) | pub const fn exprs(&self) -> &[Expression] {
    method identifier (line 82) | pub const fn identifier(&self) -> u64 {
  method span (line 89) | fn span(&self) -> Span {
  method to_interned_string (line 96) | fn to_interned_string(&self, interner: &Interner) -> String {
  method from (line 114) | fn from(template: TaggedTemplate) -> Self {
  method visit_with (line 120) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 137) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/expression/this.rs
  type This (line 16) | pub struct This {
    method new (line 24) | pub const fn new(span: Span) -> Self {
  method span (line 31) | fn span(&self) -> Span {
  method from (line 38) | fn from(value: This) -> Self {
  method to_interned_string (line 45) | fn to_interned_string(&self, _interner: &Interner) -> String {
  method visit_with (line 51) | fn visit_with<'a, V>(&'a self, _visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 58) | fn visit_with_mut<'a, V>(&'a mut self, _visitor: &mut V) -> ControlFlow<...

FILE: core/ast/src/expression/yield.rs
  type Yield (line 22) | pub struct Yield {
    method new (line 32) | pub fn new(expr: Option<Expression>, delegate: bool, span: Span) -> Se...
    method target (line 42) | pub fn target(&self) -> Option<&Expression> {
    method delegate (line 49) | pub const fn delegate(&self) -> bool {
  method span (line 56) | fn span(&self) -> Span {
  method from (line 63) | fn from(r#yield: Yield) -> Self {
  method to_interned_string (line 70) | fn to_interned_string(&self, interner: &Interner) -> String {
  method visit_with (line 81) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 92) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/function/arrow_function.rs
  type ArrowFunction (line 25) | pub struct ArrowFunction {
    method new (line 41) | pub fn new(
    method name (line 64) | pub const fn name(&self) -> Option<Identifier> {
    method set_name (line 70) | pub fn set_name(&mut self, name: Option<Identifier>) {
    method parameters (line 77) | pub const fn parameters(&self) -> &FormalParameterList {
    method body (line 84) | pub const fn body(&self) -> &FunctionBody {
    method scopes (line 91) | pub const fn scopes(&self) -> &FunctionScopes {
    method linear_span (line 98) | pub const fn linear_span(&self) -> LinearSpan {
    method contains_direct_eval (line 105) | pub const fn contains_direct_eval(&self) -> bool {
  method span (line 112) | fn span(&self) -> Span {
  method to_indented_string (line 118) | fn to_indented_string(&self, interner: &Interner, indentation: usize) ->...
  method from (line 135) | fn from(decl: ArrowFunction) -> Self {
  method visit_with (line 141) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 152) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/function/async_arrow_function.rs
  type AsyncArrowFunction (line 25) | pub struct AsyncArrowFunction {
    method new (line 42) | pub fn new(
    method name (line 65) | pub const fn name(&self) -> Option<Identifier> {
    method set_name (line 71) | pub fn set_name(&mut self, name: Option<Identifier>) {
    method parameters (line 78) | pub const fn parameters(&self) -> &FormalParameterList {
    method body (line 85) | pub const fn body(&self) -> &FunctionBody {
    method scopes (line 92) | pub const fn scopes(&self) -> &FunctionScopes {
    method linear_span (line 99) | pub const fn linear_span(&self) -> LinearSpan {
    method contains_direct_eval (line 106) | pub const fn contains_direct_eval(&self) -> bool {
  method span (line 113) | fn span(&self) -> Span {
  method to_indented_string (line 119) | fn to_indented_string(&self, interner: &Interner, indentation: usize) ->...
  method from (line 136) | fn from(decl: AsyncArrowFunction) -> Self {
  method visit_with (line 142) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 153) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/function/async_function.rs
  type AsyncFunctionDeclaration (line 26) | pub struct AsyncFunctionDeclaration {
    method new (line 41) | pub fn new(
    method name (line 62) | pub const fn name(&self) -> Identifier {
    method parameters (line 69) | pub const fn parameters(&self) -> &FormalParameterList {
    method body (line 76) | pub const fn body(&self) -> &FunctionBody {
    method scopes (line 83) | pub const fn scopes(&self) -> &FunctionScopes {
    method linear_span (line 90) | pub const fn linear_span(&self) -> LinearSpan {
    method contains_direct_eval (line 97) | pub const fn contains_direct_eval(&self) -> bool {
  method to_indented_string (line 103) | fn to_indented_string(&self, interner: &Interner, indentation: usize) ->...
  method visit_with (line 114) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 123) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  method from (line 135) | fn from(f: AsyncFunctionDeclaration) -> Self {
  type AsyncFunctionExpression (line 151) | pub struct AsyncFunctionExpression {
    method new (line 172) | pub fn new(
    method name (line 198) | pub const fn name(&self) -> Option<Identifier> {
    method parameters (line 205) | pub const fn parameters(&self) -> &FormalParameterList {
    method body (line 212) | pub const fn body(&self) -> &FunctionBody {
    method has_binding_identifier (line 219) | pub const fn has_binding_identifier(&self) -> bool {
    method name_scope (line 226) | pub const fn name_scope(&self) -> Option<&Scope> {
    method scopes (line 233) | pub const fn scopes(&self) -> &FunctionScopes {
    method linear_span (line 240) | pub const fn linear_span(&self) -> LinearSpan {
    method contains_direct_eval (line 247) | pub const fn contains_direct_eval(&self) -> bool {
  method span (line 254) | fn span(&self) -> Span {
  method to_indented_string (line 260) | fn to_indented_string(&self, interner: &Interner, indentation: usize) ->...
  method from (line 284) | fn from(expr: AsyncFunctionExpression) -> Self {
  method visit_with (line 290) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 301) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/function/async_generator.rs
  type AsyncGeneratorDeclaration (line 27) | pub struct AsyncGeneratorDeclaration {
    method new (line 42) | pub fn new(
    method name (line 63) | pub const fn name(&self) -> Identifier {
    method parameters (line 70) | pub const fn parameters(&self) -> &FormalParameterList {
    method body (line 77) | pub const fn body(&self) -> &FunctionBody {
    method scopes (line 84) | pub const fn scopes(&self) -> &FunctionScopes {
    method linear_span (line 91) | pub const fn linear_span(&self) -> LinearSpan {
    method contains_direct_eval (line 98) | pub const fn contains_direct_eval(&self) -> bool {
  method to_indented_string (line 104) | fn to_indented_string(&self, interner: &Interner, indentation: usize) ->...
  method visit_with (line 115) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 124) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  method from (line 136) | fn from(f: AsyncGeneratorDeclaration) -> Self {
  type AsyncGeneratorExpression (line 152) | pub struct AsyncGeneratorExpression {
    method new (line 173) | pub fn new(
    method name (line 199) | pub const fn name(&self) -> Option<Identifier> {
    method parameters (line 206) | pub const fn parameters(&self) -> &FormalParameterList {
    method body (line 213) | pub const fn body(&self) -> &FunctionBody {
    method has_binding_identifier (line 220) | pub const fn has_binding_identifier(&self) -> bool {
    method name_scope (line 227) | pub const fn name_scope(&self) -> Option<&Scope> {
    method scopes (line 234) | pub const fn scopes(&self) -> &FunctionScopes {
    method linear_span (line 241) | pub const fn linear_span(&self) -> LinearSpan {
    method contains_direct_eval (line 248) | pub const fn contains_direct_eval(&self) -> bool {
  method span (line 255) | fn span(&self) -> Span {
  method to_indented_string (line 261) | fn to_indented_string(&self, interner: &Interner, indentation: usize) ->...
  method from (line 281) | fn from(expr: AsyncGeneratorExpression) -> Self {
  method visit_with (line 287) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 298) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/function/class.rs
  type ClassDeclaration (line 26) | pub struct ClassDeclaration {
    method new (line 40) | pub fn new(
    method name (line 58) | pub const fn name(&self) -> Identifier {
    method super_ref (line 65) | pub const fn super_ref(&self) -> Option<&Expression> {
    method constructor (line 72) | pub const fn constructor(&self) -> Option<&FunctionExpression> {
    method elements (line 79) | pub const fn elements(&self) -> &[ClassElement] {
    method name_scope (line 86) | pub const fn name_scope(&self) -> &Scope {
  method to_indented_string (line 92) | fn to_indented_string(&self, interner: &Interner, indent_n: usize) -> St...
  method visit_with (line 120) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 137) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  method from (line 156) | fn from(f: ClassDeclaration) -> Self {
  type ClassExpression (line 172) | pub struct ClassExpression {
    method new (line 188) | pub fn new(
    method name (line 214) | pub const fn name(&self) -> Option<Identifier> {
    method super_ref (line 221) | pub const fn super_ref(&self) -> Option<&Expression> {
    method constructor (line 228) | pub const fn constructor(&self) -> Option<&FunctionExpression> {
    method elements (line 235) | pub const fn elements(&self) -> &[ClassElement] {
    method name_scope (line 242) | pub const fn name_scope(&self) -> Option<&Scope> {
  method span (line 249) | fn span(&self) -> Span {
  method to_indented_string (line 255) | fn to_indented_string(&self, interner: &Interner, indent_n: usize) -> St...
  method from (line 288) | fn from(expr: ClassExpression) -> Self {
  method visit_with (line 294) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 313) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type StaticBlockBody (line 341) | pub struct StaticBlockBody {
    method new (line 352) | pub fn new(body: FunctionBody) -> Self {
    method statements (line 362) | pub const fn statements(&self) -> &FunctionBody {
    method scopes (line 369) | pub const fn scopes(&self) -> &FunctionScopes {
  type ClassElement (line 383) | pub enum ClassElement {
  type ClassFieldDefinition (line 413) | pub struct ClassFieldDefinition {
    method new (line 425) | pub fn new(name: PropertyName, initializer: Option<Expression>) -> Self {
    method name (line 436) | pub const fn name(&self) -> &PropertyName {
    method initializer (line 443) | pub const fn initializer(&self) -> Option<&Expression> {
    method scope (line 450) | pub const fn scope(&self) -> &Scope {
  type PrivateFieldDefinition (line 464) | pub struct PrivateFieldDefinition {
    method new (line 476) | pub fn new(name: PrivateName, initializer: Option<Expression>) -> Self {
    method name (line 487) | pub const fn name(&self) -> &PrivateName {
    method initializer (line 494) | pub const fn initializer(&self) -> Option<&Expression> {
    method scope (line 501) | pub const fn scope(&self) -> &Scope {
  method to_indented_string (line 507) | fn to_indented_string(&self, interner: &Interner, indent_n: usize) -> St...
  method visit_with (line 588) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 632) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type ClassMethodDefinition (line 689) | pub struct ClassMethodDefinition {
    method new (line 706) | pub fn new(
    method name (line 734) | pub const fn name(&self) -> &ClassElementName {
    method parameters (line 741) | pub const fn parameters(&self) -> &FormalParameterList {
    method body (line 748) | pub const fn body(&self) -> &FunctionBody {
    method kind (line 755) | pub const fn kind(&self) -> MethodDefinitionKind {
    method is_static (line 762) | pub const fn is_static(&self) -> bool {
    method is_private (line 769) | pub const fn is_private(&self) -> bool {
    method scopes (line 776) | pub const fn scopes(&self) -> &FunctionScopes {
    method linear_span (line 783) | pub const fn linear_span(&self) -> LinearSpan {
    method contains_direct_eval (line 790) | pub const fn contains_direct_eval(&self) -> bool {
  method to_indented_string (line 796) | fn to_indented_string(&self, interner: &Interner, indent_n: usize) -> St...
  type ClassElementName (line 828) | pub enum ClassElementName {
    method is_private (line 840) | pub const fn is_private(&self) -> bool {
  method to_interned_string (line 846) | fn to_interned_string(&self, interner: &Interner) -> String {
  type PrivateName (line 860) | pub struct PrivateName {
    method new (line 870) | pub const fn new(description: Sym, span: Span) -> Self {
    method description (line 877) | pub const fn description(&self) -> Sym {
  method span (line 884) | fn span(&self) -> Span {
  method visit_with (line 890) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 897) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/function/generator.rs
  type GeneratorDeclaration (line 24) | pub struct GeneratorDeclaration {
    method new (line 39) | pub fn new(
    method name (line 60) | pub const fn name(&self) -> Identifier {
    method parameters (line 67) | pub const fn parameters(&self) -> &FormalParameterList {
    method body (line 74) | pub const fn body(&self) -> &FunctionBody {
    method scopes (line 81) | pub const fn scopes(&self) -> &FunctionScopes {
    method linear_span (line 88) | pub const fn linear_span(&self) -> LinearSpan {
    method contains_direct_eval (line 95) | pub const fn contains_direct_eval(&self) -> bool {
  method to_indented_string (line 101) | fn to_indented_string(&self, interner: &Interner, indentation: usize) ->...
  method visit_with (line 112) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 121) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  method from (line 133) | fn from(f: GeneratorDeclaration) -> Self {
  type GeneratorExpression (line 149) | pub struct GeneratorExpression {
    method new (line 170) | pub fn new(
    method name (line 196) | pub const fn name(&self) -> Option<Identifier> {
    method parameters (line 203) | pub const fn parameters(&self) -> &FormalParameterList {
    method body (line 210) | pub const fn body(&self) -> &FunctionBody {
    method has_binding_identifier (line 217) | pub const fn has_binding_identifier(&self) -> bool {
    method name_scope (line 224) | pub const fn name_scope(&self) -> Option<&Scope> {
    method scopes (line 231) | pub const fn scopes(&self) -> &FunctionScopes {
    method linear_span (line 238) | pub const fn linear_span(&self) -> LinearSpan {
    method contains_direct_eval (line 245) | pub const fn contains_direct_eval(&self) -> bool {
  method span (line 252) | fn span(&self) -> Span {
  method to_indented_string (line 258) | fn to_indented_string(&self, interner: &Interner, indentation: usize) ->...
  method from (line 278) | fn from(expr: GeneratorExpression) -> Self {
  method visit_with (line 284) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 295) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/function/mod.rs
  type FunctionBody (line 67) | pub struct FunctionBody {
    method new (line 76) | pub fn new(statements: StatementList, span: Span) -> Self {
    method statements (line 83) | pub const fn statements(&self) -> &[StatementListItem] {
    method statement_list (line 90) | pub const fn statement_list(&self) -> &StatementList {
    method strict (line 97) | pub const fn strict(&self) -> bool {
    method linear_pos_end (line 104) | pub const fn linear_pos_end(&self) -> LinearPosition {
  method span (line 111) | fn span(&self) -> Span {
  method to_indented_string (line 117) | fn to_indented_string(&self, interner: &Interner, indentation: usize) ->...
  method visit_with (line 123) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 133) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/function/ordinary_function.rs
  type FunctionDeclaration (line 27) | pub struct FunctionDeclaration {
    method new (line 42) | pub fn new(
    method name (line 63) | pub const fn name(&self) -> Identifier {
    method parameters (line 70) | pub const fn parameters(&self) -> &FormalParameterList {
    method body (line 77) | pub const fn body(&self) -> &FunctionBody {
    method scopes (line 84) | pub const fn scopes(&self) -> &FunctionScopes {
    method linear_span (line 91) | pub const fn linear_span(&self) -> LinearSpan {
    method contains_direct_eval (line 98) | pub const fn contains_direct_eval(&self) -> bool {
  method to_indented_string (line 104) | fn to_indented_string(&self, interner: &Interner, indentation: usize) ->...
  method visit_with (line 115) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 124) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  method from (line 136) | fn from(f: FunctionDeclaration) -> Self {
  type FunctionExpression (line 152) | pub struct FunctionExpression {
    method new (line 195) | pub fn new(
    method name (line 222) | pub const fn name(&self) -> Option<Identifier> {
    method parameters (line 229) | pub const fn parameters(&self) -> &FormalParameterList {
    method body (line 236) | pub const fn body(&self) -> &FunctionBody {
    method has_binding_identifier (line 243) | pub const fn has_binding_identifier(&self) -> bool {
    method name_scope (line 250) | pub const fn name_scope(&self) -> Option<&Scope> {
    method scopes (line 257) | pub const fn scopes(&self) -> &FunctionScopes {
    method linear_span (line 264) | pub const fn linear_span(&self) -> Option<LinearSpan> {
    method contains_direct_eval (line 271) | pub const fn contains_direct_eval(&self) -> bool {
    method analyze_scope (line 279) | pub fn analyze_scope(
  method eq (line 171) | fn eq(&self, other: &Self) -> bool {
  method span (line 186) | fn span(&self) -> Span {
  method to_indented_string (line 293) | fn to_indented_string(&self, interner: &Interner, indentation: usize) ->...
  method from (line 313) | fn from(expr: FunctionExpression) -> Self {
  method visit_with (line 319) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 330) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/function/parameters.rs
  type FormalParameterList (line 17) | pub struct FormalParameterList {
    method new (line 26) | pub fn new() -> Self {
    method from_parameters (line 36) | pub fn from_parameters(parameters: Vec<FormalParameter>) -> Self {
    method length (line 83) | pub const fn length(&self) -> u32 {
    method flags (line 89) | pub const fn flags(&self) -> FormalParameterListFlags {
    method is_simple (line 95) | pub const fn is_simple(&self) -> bool {
    method has_duplicates (line 101) | pub const fn has_duplicates(&self) -> bool {
    method has_rest_parameter (line 108) | pub const fn has_rest_parameter(&self) -> bool {
    method has_expressions (line 115) | pub const fn has_expressions(&self) -> bool {
    method has_arguments (line 122) | pub const fn has_arguments(&self) -> bool {
    method from (line 128) | fn from(parameters: Vec<FormalParameter>) -> Self {
    method from (line 134) | fn from(parameter: FormalParameter) -> Self {
    method as_ref (line 140) | fn as_ref(&self) -> &[FormalParameter] {
    method arbitrary (line 172) | fn arbitrary(u: &mut arbitrary::Unstructured<'a>) -> arbitrary::Result...
  method visit_with (line 146) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 157) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  method default (line 197) | fn default() -> Self {
  type FormalParameter (line 220) | pub struct FormalParameter {
    method new (line 227) | pub fn new<D>(variable: D, is_rest_param: bool) -> Self
    method variable (line 239) | pub const fn variable(&self) -> &Variable {
    method init (line 245) | pub const fn init(&self) -> Option<&Expression> {
    method is_rest_param (line 251) | pub const fn is_rest_param(&self) -> bool {
    method is_identifier (line 257) | pub const fn is_identifier(&self) -> bool {
  method to_interned_string (line 263) | fn to_interned_string(&self, interner: &Interner) -> String {
  method visit_with (line 275) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 282) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/keyword/mod.rs
  type Keyword (line 25) | pub enum Keyword {
    method as_binary_op (line 464) | pub const fn as_binary_op(self) -> Option<BinaryOp> {
    method as_str (line 474) | pub const fn as_str(self) -> (&'static str, &'static [u16]) {
    method to_sym (line 520) | pub const fn to_sym(self) -> Sym {
    method fmt (line 646) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
  type Error (line 566) | type Error = KeywordToBinaryOpError;
  method try_from (line 568) | fn try_from(value: Keyword) -> Result<Self, Self::Error> {
  type KeywordToBinaryOpError (line 575) | pub struct KeywordToBinaryOpError;
    method fmt (line 578) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
  type KeywordError (line 587) | pub struct KeywordError;
    method fmt (line 589) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
  type Err (line 598) | type Err = KeywordError;
  method from_str (line 599) | fn from_str(s: &str) -> Result<Self, Self::Err> {

FILE: core/ast/src/keyword/tests.rs
  function all_keywords (line 6) | fn all_keywords() -> impl Iterator<Item = Keyword> {
  function as_binary_op (line 51) | fn as_binary_op() {
  function as_str (line 68) | fn as_str() {
  function to_sym (line 229) | fn to_sym() {
  function try_into_binary_op (line 276) | fn try_into_binary_op() {
  function from_str (line 322) | fn from_str() {

FILE: core/ast/src/lib.rs
  function join_nodes (line 66) | fn join_nodes<N>(interner: &Interner, nodes: &[N]) -> String
  function block_to_string (line 87) | fn block_to_string(body: &StatementList, interner: &Interner, indentatio...
  type ToStringEscaped (line 100) | trait ToStringEscaped {
    method to_string_escaped (line 103) | fn to_string_escaped(&self) -> String;
    method to_string_escaped (line 107) | fn to_string_escaped(&self) -> String {
  type ToJsString (line 117) | pub(crate) trait ToJsString {
    method to_js_string (line 118) | fn to_js_string(&self, interner: &Interner) -> JsString;
    method to_js_string (line 123) | fn to_js_string(&self, interner: &Interner) -> JsString {
    method to_js_string (line 135) | fn to_js_string(&self, interner: &Interner) -> JsString {

FILE: core/ast/src/module_item_list/mod.rs
  type ModuleItemList (line 33) | pub struct ModuleItemList {
    method items (line 41) | pub const fn items(&self) -> &[ModuleItem] {
    method exported_names (line 50) | pub fn exported_names(&self) -> Vec<Sym> {
    method exported_bindings (line 130) | pub fn exported_bindings(&self) -> FxHashSet<Sym> {
    method requests (line 204) | pub fn requests(&self) -> IndexSet<Sym, BuildHasherDefault<FxHasher>> {
    method import_entries (line 240) | pub fn import_entries(&self) -> Vec<ImportEntry> {
    method export_entries (line 312) | pub fn export_entries(&self) -> Vec<ExportEntry> {
    method from (line 425) | fn from(items: T) -> Self {
  method visit_with (line 433) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 444) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type ModuleItem (line 468) | pub enum ModuleItem {
  method visit_with (line 478) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 489) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/operations/mod.rs
  type ContainsSymbol (line 44) | pub enum ContainsSymbol {
  function contains (line 77) | pub fn contains<N>(node: &N, symbol: ContainsSymbol) -> bool
  function contains_arguments (line 356) | pub fn contains_arguments<N>(node: &N) -> bool
  function has_direct_super_new (line 462) | pub fn has_direct_super_new(params: &FormalParameterList, body: &Functio...
  type IdentList (line 467) | pub(crate) trait IdentList {
    method add (line 468) | fn add(&mut self, value: Sym, function: bool);
    method add (line 472) | fn add(&mut self, value: Sym, _function: bool) {
    method add (line 478) | fn add(&mut self, value: Sym, function: bool) {
    method add (line 484) | fn add(&mut self, value: Sym, _function: bool) {
  type BoundNamesVisitor (line 491) | pub(crate) struct BoundNamesVisitor<'a, T: IdentList>(pub(crate) &'a mut...
  type BreakTy (line 494) | type BreakTy = Infallible;
  function visit_identifier (line 496) | fn visit_identifier(&mut self, node: &'ast Identifier) -> ControlFlow<Se...
  function visit_expression (line 501) | fn visit_expression(&mut self, _: &'ast Expression) -> ControlFlow<Self:...
  function visit_function_expression (line 505) | fn visit_function_expression(
  function visit_function_declaration (line 515) | fn visit_function_declaration(
  function visit_generator_expression (line 523) | fn visit_generator_expression(
  function visit_generator_declaration (line 533) | fn visit_generator_declaration(
  function visit_async_function_expression (line 541) | fn visit_async_function_expression(
  function visit_async_function_declaration (line 551) | fn visit_async_function_declaration(
  function visit_async_generator_expression (line 559) | fn visit_async_generator_expression(
  function visit_async_generator_declaration (line 569) | fn visit_async_generator_declaration(
  function visit_class_expression (line 577) | fn visit_class_expression(
  function visit_class_declaration (line 587) | fn visit_class_declaration(
  function visit_export_declaration (line 595) | fn visit_export_declaration(
  function bound_names (line 633) | pub fn bound_names<'a, N>(node: &'a N) -> Vec<Sym>
  type LexicallyDeclaredNamesVisitor (line 645) | struct LexicallyDeclaredNamesVisitor<'a, T: IdentList>(&'a mut T);
  type BreakTy (line 648) | type BreakTy = Infallible;
  function visit_script (line 650) | fn visit_script(&mut self, node: &'ast Script) -> ControlFlow<Self::Brea...
  function visit_function_body (line 655) | fn visit_function_body(&mut self, node: &'ast FunctionBody) -> ControlFl...
  function visit_module_item (line 660) | fn visit_module_item(&mut self, node: &'ast ModuleItem) -> ControlFlow<S...
  function visit_expression (line 687) | fn visit_expression(&mut self, _: &'ast Expression) -> ControlFlow<Self:...
  function visit_statement (line 691) | fn visit_statement(&mut self, node: &'ast Statement) -> ControlFlow<Self...
  function visit_declaration (line 698) | fn visit_declaration(&mut self, node: &'ast Declaration) -> ControlFlow<...
  function visit_labelled_item (line 702) | fn visit_labelled_item(&mut self, node: &'ast LabelledItem) -> ControlFl...
  function visit_function_expression (line 711) | fn visit_function_expression(
  function visit_function_declaration (line 718) | fn visit_function_declaration(
  function visit_async_function_expression (line 725) | fn visit_async_function_expression(
  function visit_async_function_declaration (line 732) | fn visit_async_function_declaration(
  function visit_generator_expression (line 739) | fn visit_generator_expression(
  function visit_generator_declaration (line 746) | fn visit_generator_declaration(
  function visit_async_generator_expression (line 753) | fn visit_async_generator_expression(
  function visit_async_generator_declaration (line 760) | fn visit_async_generator_declaration(
  function visit_arrow_function (line 767) | fn visit_arrow_function(&mut self, node: &'ast ArrowFunction) -> Control...
  function visit_async_arrow_function (line 771) | fn visit_async_arrow_function(
  function visit_class_element (line 778) | fn visit_class_element(&mut self, node: &'ast ClassElement) -> ControlFl...
  function visit_import_declaration (line 785) | fn visit_import_declaration(
  function visit_export_declaration (line 792) | fn visit_export_declaration(
  function lexically_declared_names (line 809) | pub fn lexically_declared_names<'a, N>(node: &'a N) -> Vec<Sym>
  function lexically_declared_names_legacy (line 826) | pub fn lexically_declared_names_legacy<'a, N>(node: &'a N) -> Vec<(Sym, ...
  type VarDeclaredNamesVisitor (line 837) | struct VarDeclaredNamesVisitor<'a>(&'a mut FxHashSet<Sym>);
  type BreakTy (line 840) | type BreakTy = Infallible;
  function visit_script (line 842) | fn visit_script(&mut self, node: &'ast Script) -> ControlFlow<Self::Brea...
  function visit_function_body (line 847) | fn visit_function_body(&mut self, node: &'ast FunctionBody) -> ControlFl...
  function visit_module_item (line 852) | fn visit_module_item(&mut self, node: &'ast ModuleItem) -> ControlFlow<S...
  function visit_statement (line 875) | fn visit_statement(&mut self, node: &'ast Statement) -> ControlFlow<Self...
  function visit_statement_list_item (line 899) | fn visit_statement_list_item(
  function visit_variable (line 909) | fn visit_variable(&mut self, node: &'ast Variable) -> ControlFlow<Self::...
  function visit_if (line 913) | fn visit_if(&mut self, node: &'ast crate::statement::If) -> ControlFlow<...
  function visit_do_while_loop (line 920) | fn visit_do_while_loop(
  function visit_while_loop (line 927) | fn visit_while_loop(
  function visit_for_loop (line 934) | fn visit_for_loop(
  function visit_for_in_loop (line 944) | fn visit_for_in_loop(
  function visit_for_of_loop (line 954) | fn visit_for_of_loop(
  function visit_with (line 964) | fn visit_with(&mut self, node: &'ast With) -> ControlFlow<Self::BreakTy> {
  function visit_switch (line 968) | fn visit_switch(&mut self, node: &'ast crate::statement::Switch) -> Cont...
  function visit_labelled_item (line 978) | fn visit_labelled_item(&mut self, node: &'ast LabelledItem) -> ControlFl...
  function visit_try (line 985) | fn visit_try(&mut self, node: &'ast crate::statement::Try) -> ControlFlo...
  function visit_function_expression (line 995) | fn visit_function_expression(
  function visit_function_declaration (line 1002) | fn visit_function_declaration(
  function visit_async_function_expression (line 1009) | fn visit_async_function_expression(
  function visit_async_function_declaration (line 1016) | fn visit_async_function_declaration(
  function visit_generator_expression (line 1023) | fn visit_generator_expression(
  function visit_generator_declaration (line 1030) | fn visit_generator_declaration(
  function visit_async_generator_expression (line 1037) | fn visit_async_generator_expression(
  function visit_async_generator_declaration (line 1044) | fn visit_async_generator_declaration(
  function visit_class_element (line 1051) | fn visit_class_element(&mut self, node: &'ast ClassElement) -> ControlFl...
  function visit_import_declaration (line 1058) | fn visit_import_declaration(
  function visit_export_declaration (line 1065) | fn visit_export_declaration(
  function var_declared_names (line 1084) | pub fn var_declared_names<'a, N>(node: &'a N) -> FxHashSet<Sym>
  function top_level_lexicals (line 1098) | fn top_level_lexicals<T: IdentList>(stmts: &StatementList, names: &mut T) {
  function top_level_vars (line 1125) | fn top_level_vars(stmts: &StatementList, names: &mut FxHashSet<Sym>) {
  function all_private_identifiers_valid (line 1174) | pub fn all_private_identifiers_valid<'a, N>(node: &'a N, private_names: ...
  type AllPrivateIdentifiersValidVisitor (line 1183) | struct AllPrivateIdentifiersValidVisitor(Vec<Sym>);
    type BreakTy (line 1186) | type BreakTy = ();
    method visit_class_expression (line 1188) | fn visit_class_expression(
    method visit_class_declaration (line 1257) | fn visit_class_declaration(
    method visit_private_property_access (line 1326) | fn visit_private_property_access(
    method visit_binary_in_private (line 1337) | fn visit_binary_in_private(
    method visit_optional_operation_kind (line 1348) | fn visit_optional_operation_kind(
  type CheckLabelsError (line 1375) | pub enum CheckLabelsError {
    method message (line 1395) | pub fn message(&self, interner: &Interner) -> String {
  function check_labels (line 1434) | pub fn check_labels<N>(node: &N) -> Result<(), CheckLabelsError>
  function contains_invalid_object_literal (line 1725) | pub fn contains_invalid_object_literal<N>(node: &N) -> bool
  type LexicallyScopedDeclaration (line 1756) | pub enum LexicallyScopedDeclaration<'a> {
  function bound_names (line 1784) | pub fn bound_names(&self) -> Vec<Sym> {
  function from (line 1798) | fn from(value: &'ast Declaration) -> LexicallyScopedDeclaration<'ast> {
  function lexically_scoped_declarations (line 1816) | pub fn lexically_scoped_declarations<'a, N>(node: &'a N) -> Vec<Lexicall...
  type LexicallyScopedDeclarationsVisitor (line 1827) | struct LexicallyScopedDeclarationsVisitor<'a, 'ast>(&'a mut Vec<Lexicall...
  type BreakTy (line 1830) | type BreakTy = Infallible;
  function visit_script (line 1833) | fn visit_script(&mut self, node: &'ast Script) -> ControlFlow<Self::Brea...
  function visit_function_body (line 1838) | fn visit_function_body(&mut self, node: &'ast FunctionBody) -> ControlFl...
  function visit_export_declaration (line 1844) | fn visit_export_declaration(
  function visit_statement_list_item (line 1899) | fn visit_statement_list_item(
  function visit_labelled_item (line 1924) | fn visit_labelled_item(&mut self, node: &'ast LabelledItem) -> ControlFl...
  function visit_module_item (line 1941) | fn visit_module_item(&mut self, node: &'ast ModuleItem) -> ControlFlow<S...
  type TopLevelLexicallyScopedDeclarationsVisitor (line 1960) | struct TopLevelLexicallyScopedDeclarationsVisitor<'a, 'ast>(
  type BreakTy (line 1965) | type BreakTy = Infallible;
  function visit_statement_list_item (line 1967) | fn visit_statement_list_item(
  type VarScopedDeclaration (line 2005) | pub enum VarScopedDeclaration {
    method bound_names (line 2025) | pub fn bound_names(&self) -> Vec<Sym> {
    method linear_span (line 2037) | pub fn linear_span(&self) -> Option<LinearSpan> {
  function var_scoped_declarations (line 2054) | pub fn var_scoped_declarations<'a, N>(node: &'a N) -> Vec<VarScopedDecla...
  type VarScopedDeclarationsVisitor (line 2065) | struct VarScopedDeclarationsVisitor<'a>(&'a mut Vec<VarScopedDeclaration>);
  type BreakTy (line 2068) | type BreakTy = Infallible;
  function visit_script (line 2071) | fn visit_script(&mut self, node: &'ast Script) -> ControlFlow<Self::Brea...
  function visit_function_body (line 2076) | fn visit_function_body(&mut self, node: &'ast FunctionBody) -> ControlFl...
  function visit_statement (line 2081) | fn visit_statement(&mut self, node: &'ast Statement) -> ControlFlow<Self...
  function visit_statement_list_item (line 2105) | fn visit_statement_list_item(
  function visit_var_declaration (line 2115) | fn visit_var_declaration(&mut self, node: &'ast VarDeclaration) -> Contr...
  function visit_if (line 2123) | fn visit_if(&mut self, node: &'ast crate::statement::If) -> ControlFlow<...
  function visit_do_while_loop (line 2131) | fn visit_do_while_loop(
  function visit_while_loop (line 2139) | fn visit_while_loop(
  function visit_for_loop (line 2147) | fn visit_for_loop(
  function visit_for_in_loop (line 2158) | fn visit_for_in_loop(
  function visit_for_of_loop (line 2170) | fn visit_for_of_loop(
  function visit_with (line 2182) | fn visit_with(&mut self, node: &'ast With) -> ControlFlow<Self::BreakTy> {
  function visit_switch (line 2187) | fn visit_switch(&mut self, node: &'ast crate::statement::Switch) -> Cont...
  function visit_case (line 2197) | fn visit_case(&mut self, node: &'ast crate::statement::Case) -> ControlF...
  function visit_labelled_item (line 2202) | fn visit_labelled_item(&mut self, node: &'ast LabelledItem) -> ControlFl...
  function visit_catch (line 2209) | fn visit_catch(&mut self, node: &'ast crate::statement::Catch) -> Contro...
  function visit_module_item (line 2214) | fn visit_module_item(&mut self, node: &'ast ModuleItem) -> ControlFlow<S...
  type TopLevelVarScopedDeclarationsVisitor (line 2242) | struct TopLevelVarScopedDeclarationsVisitor<'a>(&'a mut Vec<VarScopedDec...
  type BreakTy (line 2245) | type BreakTy = Infallible;
  function visit_statement_list_item (line 2247) | fn visit_statement_list_item(
  function visit_labelled_item (line 2284) | fn visit_labelled_item(&mut self, node: &'ast LabelledItem) -> ControlFl...
  function annex_b_function_declarations_names (line 2313) | pub fn annex_b_function_declarations_names<'a, N>(node: &'a N) -> Vec<Sym>
  type AnnexBFunctionDeclarationNamesVisitor (line 2324) | struct AnnexBFunctionDeclarationNamesVisitor<'a>(&'a mut Vec<Sym>);
  type BreakTy (line 2327) | type BreakTy = Infallible;
  function visit_statement_list_item (line 2329) | fn visit_statement_list_item(
  function visit_statement (line 2339) | fn visit_statement(&mut self, node: &'ast Statement) -> ControlFlow<Self...
  function visit_block (line 2356) | fn visit_block(&mut self, node: &'ast crate::statement::Block) -> Contro...
  function visit_switch (line 2375) | fn visit_switch(&mut self, node: &'ast crate::statement::Switch) -> Cont...
  function visit_try (line 2407) | fn visit_try(&mut self, node: &'ast crate::statement::Try) -> ControlFlo...
  function visit_if (line 2424) | fn visit_if(&mut self, node: &'ast crate::statement::If) -> ControlFlow<...
  function visit_do_while_loop (line 2431) | fn visit_do_while_loop(
  function visit_while_loop (line 2438) | fn visit_while_loop(
  function visit_for_loop (line 2445) | fn visit_for_loop(
  function visit_for_in_loop (line 2459) | fn visit_for_in_loop(
  function visit_for_of_loop (line 2477) | fn visit_for_of_loop(
  function visit_labelled (line 2495) | fn visit_labelled(
  function visit_with (line 2505) | fn visit_with(&mut self, node: &'ast With) -> ControlFlow<Self::BreakTy> {
  function returns_value (line 2512) | pub fn returns_value<'a, N>(node: &'a N) -> bool
  type ReturnsValueVisitor (line 2521) | struct ReturnsValueVisitor;
    type BreakTy (line 2524) | type BreakTy = ();
    method visit_block (line 2526) | fn visit_block(&mut self, node: &'ast crate::statement::Block) -> Cont...
    method visit_statement (line 2536) | fn visit_statement(&mut self, node: &'ast Statement) -> ControlFlow<Se...
    method visit_case (line 2546) | fn visit_case(&mut self, node: &'ast crate::statement::Case) -> Contro...
    method visit_labelled (line 2556) | fn visit_labelled(

FILE: core/ast/src/operations/tests.rs
  function empty_span (line 10) | fn empty_span() -> Span {
  function check_contains_this_in_with_statement_expression (line 15) | fn check_contains_this_in_with_statement_expression() {
  function check_contains_new_target_in_with_statement_expression (line 21) | fn check_contains_new_target_in_with_statement_expression() {
  function check_contains_new_target_in_call_function_position (line 27) | fn check_contains_new_target_in_call_function_position() {
  function check_contains_this_in_call_argument_position (line 37) | fn check_contains_this_in_call_argument_position() {
  function check_contains_new_target_in_call_argument_position (line 50) | fn check_contains_new_target_in_call_argument_position() {

FILE: core/ast/src/pattern.rs
  type Pattern (line 40) | pub enum Pattern {
    method from (line 58) | fn from(obj: ObjectPattern) -> Self {
    method from (line 64) | fn from(obj: ArrayPattern) -> Self {
  method span (line 49) | fn span(&self) -> Span {
  method to_interned_string (line 70) | fn to_interned_string(&self, interner: &Interner) -> String {
  method visit_with (line 79) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 89) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type ObjectPattern (line 112) | pub struct ObjectPattern {
    method new (line 142) | pub const fn new(elements: Box<[ObjectPatternElement]>, span: Span) ->...
    method bindings (line 149) | pub const fn bindings(&self) -> &[ObjectPatternElement] {
    method has_rest (line 156) | pub const fn has_rest(&self) -> bool {
  method to_interned_string (line 118) | fn to_interned_string(&self, interner: &Interner) -> String {
  method span (line 166) | fn span(&self) -> Span {
  method visit_with (line 172) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 182) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type ArrayPattern (line 205) | pub struct ArrayPattern {
    method new (line 236) | pub fn new(bindings: Box<[ArrayPatternElement]>, span: Span) -> Self {
    method bindings (line 243) | pub const fn bindings(&self) -> &[ArrayPatternElement] {
  method to_interned_string (line 211) | fn to_interned_string(&self, interner: &Interner) -> String {
  method span (line 250) | fn span(&self) -> Span {
  method visit_with (line 256) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 266) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type ObjectPatternElement (line 286) | pub enum ObjectPatternElement {
  method to_interned_string (line 373) | fn to_interned_string(&self, interner: &Interner) -> String {
  method visit_with (line 467) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 518) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type ArrayPatternElement (line 579) | pub enum ArrayPatternElement {
  method to_interned_string (line 673) | fn to_interned_string(&self, interner: &Interner) -> String {
  method visit_with (line 720) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 768) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/position.rs
  type Position (line 15) | pub struct Position {
    method new (line 39) | pub const fn new(line_number: u32, column_number: u32) -> Self {
    method line_number (line 49) | pub const fn line_number(self) -> u32 {
    method column_number (line 56) | pub const fn column_number(self) -> u32 {
    method fmt (line 62) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    method from (line 69) | fn from(value: PositionGroup) -> Self {
    method from (line 76) | fn from(value: (NonZeroU32, NonZeroU32)) -> Self {
    method from (line 87) | fn from(value: (u32, u32)) -> Self {
  method default (line 25) | fn default() -> Self {
  type LinearPosition (line 105) | pub struct LinearPosition {
    method new (line 113) | pub const fn new(pos: usize) -> Self {
    method pos (line 119) | pub const fn pos(self) -> usize {
    method fmt (line 124) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
  type Span (line 137) | pub struct Span {
    method arbitrary (line 94) | fn arbitrary(_u: &mut arbitrary::Unstructured<'a>) -> arbitrary::Resul...
    method new (line 164) | pub fn new<T, U>(start: T, end: U) -> Self
    method start (line 180) | pub const fn start(self) -> Position {
    method end (line 187) | pub const fn end(self) -> Position {
    method contains (line 192) | pub fn contains<S>(self, other: S) -> bool
    method from (line 202) | fn from(pos: Position) -> Self {
    method fmt (line 239) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
  method fmt (line 143) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
  method partial_cmp (line 225) | fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
  type Spanned (line 245) | pub trait Spanned {
    method span (line 212) | fn span(&self) -> Span {
    method span (line 219) | fn span(&self) -> Span {
    method span (line 248) | fn span(&self) -> Span;
  type LinearSpan (line 259) | pub struct LinearSpan {
    method new (line 272) | pub const fn new(start: LinearPosition, end: LinearPosition) -> Self {
    method is_empty (line 284) | pub fn is_empty(self) -> bool {
    method start (line 291) | pub const fn start(self) -> LinearPosition {
    method end (line 298) | pub const fn end(self) -> LinearPosition {
    method contains (line 303) | pub fn contains<S>(self, other: S) -> bool
    method union (line 314) | pub fn union(self, other: impl Into<Self>) -> Self {
    method arbitrary (line 324) | fn arbitrary(_: &mut arbitrary::Unstructured<'a>) -> arbitrary::Result...
    method from (line 331) | fn from(pos: LinearPosition) -> Self {
  method partial_cmp (line 340) | fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
  type LinearSpanIgnoreEq (line 356) | pub struct LinearSpanIgnoreEq(pub LinearSpan);
    method from (line 363) | fn from(value: LinearSpan) -> Self {
    method arbitrary (line 369) | fn arbitrary(u: &mut arbitrary::Unstructured<'a>) -> arbitrary::Result...
  method eq (line 358) | fn eq(&self, _: &Self) -> bool {
  type PositionGroup (line 377) | pub struct PositionGroup {
    method new (line 385) | pub const fn new(pos: Position, linear_pos: LinearPosition) -> Self {
    method position (line 391) | pub fn position(&self) -> Position {
    method linear_position (line 397) | pub fn linear_position(&self) -> LinearPosition {
    method line_number (line 404) | pub const fn line_number(&self) -> u32 {
    method column_number (line 411) | pub const fn column_number(&self) -> u32 {
  function invalid_position_column (line 425) | fn invalid_position_column() {
  function invalid_position_line (line 432) | fn invalid_position_line() {
  function position_equality (line 438) | fn position_equality() {
  function linear_position_equality (line 447) | fn linear_position_equality() {
  function position_order (line 454) | fn position_order() {
  function linear_position_order (line 468) | fn linear_position_order() {
  function position_getters (line 475) | fn position_getters() {
  function position_to_string (line 483) | fn position_to_string() {
  function invalid_span (line 493) | fn invalid_span() {
  function invalid_linear_span (line 502) | fn invalid_linear_span() {
  function span_creation (line 510) | fn span_creation() {
  function linear_span_creation (line 521) | fn linear_span_creation() {
  function span_equality (line 532) | fn span_equality() {
  function linear_span_equality (line 555) | fn linear_span_equality() {
  function span_getters (line 573) | fn span_getters() {
  function span_contains (line 585) | fn span_contains() {
  function linear_span_contains (line 615) | fn linear_span_contains() {
  function span_to_string (line 645) | fn span_to_string() {
  function span_ordering (line 656) | fn span_ordering() {
  function linear_span_ordering (line 671) | fn linear_span_ordering() {
  function linear_union (line 691) | fn linear_union() {

FILE: core/ast/src/property.rs
  type PropertyName (line 20) | pub enum PropertyName {
    method literal (line 41) | pub const fn literal(&self) -> Option<Identifier> {
    method computed (line 51) | pub const fn computed(&self) -> Option<&Expression> {
    method prop_name (line 61) | pub fn prop_name(&self) -> Option<Identifier> {
    method from (line 82) | fn from(name: Identifier) -> Self {
    method from (line 88) | fn from(name: Expression) -> Self {
  method to_interned_string (line 73) | fn to_interned_string(&self, interner: &Interner) -> String {
  method visit_with (line 94) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 104) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type MethodDefinitionKind (line 119) | pub enum MethodDefinitionKind {

FILE: core/ast/src/punctuator/mod.rs
  type Punctuator (line 25) | pub enum Punctuator {
    method as_assign_op (line 147) | pub const fn as_assign_op(self) -> Option<AssignOp> {
    method as_binary_op (line 173) | pub const fn as_binary_op(self) -> Option<BinaryOp> {
    method as_str (line 205) | pub const fn as_str(self) -> &'static str {
  type Error (line 270) | type Error = String;
  method try_from (line 272) | fn try_from(punct: Punctuator) -> Result<Self, Self::Error> {
  type Error (line 281) | type Error = String;
  method try_from (line 283) | fn try_from(punct: Punctuator) -> Result<Self, Self::Error> {
  method fmt (line 291) | fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error> {
  function from (line 297) | fn from(p: Punctuator) -> Self {

FILE: core/ast/src/punctuator/tests.rs
  function all_punctuators (line 6) | fn all_punctuators() -> impl Iterator<Item = Punctuator> {
  function as_assign_op (line 70) | fn as_assign_op() {
  function as_binary_op (line 115) | fn as_binary_op() {
  function as_str (line 192) | fn as_str() {
  function try_into_assign_op (line 258) | fn try_into_assign_op() {
  function try_into_binary_op (line 269) | fn try_into_binary_op() {
  function display (line 280) | fn display() {
  function into_box (line 287) | fn into_box() {

FILE: core/ast/src/scope.rs
  method is_mutable (line 25) | fn is_mutable(self) -> bool {
  method is_lex (line 28) | fn is_lex(self) -> bool {
  method is_strict (line 31) | fn is_strict(self) -> bool {
  method escapes (line 34) | fn escapes(self) -> bool {
  method is_accessed (line 37) | fn is_accessed(self) -> bool {
  type Binding (line 43) | struct Binding {
    method is_mutable (line 50) | fn is_mutable(&self) -> bool {
    method is_lex (line 53) | fn is_lex(&self) -> bool {
    method is_strict (line 56) | fn is_strict(&self) -> bool {
    method escapes (line 59) | fn escapes(&self) -> bool {
    method is_accessed (line 62) | fn is_accessed(&self) -> bool {
  type Scope (line 71) | pub struct Scope {
    method arbitrary (line 94) | fn arbitrary(_u: &mut arbitrary::Unstructured<'a>) -> arbitrary::Resul...
    method new_global (line 115) | pub fn new_global() -> Self {
    method new (line 131) | pub fn new(parent: Self, function: bool) -> Self {
    method all_bindings_local (line 147) | pub fn all_bindings_local(&self) -> bool {
    method escape_all_bindings (line 157) | pub fn escape_all_bindings(&self) {
    method escaped_this (line 165) | pub fn escaped_this(&self) -> bool {
    method has_lex_binding (line 171) | pub fn has_lex_binding(&self, name: &JsString) -> bool {
    method has_binding (line 182) | pub fn has_binding(&self, name: &JsString) -> bool {
    method get_identifier_reference (line 189) | pub fn get_identifier_reference(&self, name: JsString) -> IdentifierRe...
    method num_bindings (line 211) | pub fn num_bindings(&self) -> u32 {
    method num_bindings_non_local (line 218) | pub fn num_bindings_non_local(&self) -> u32 {
    method reorder_binding_indices (line 228) | pub(crate) fn reorder_binding_indices(&self) {
    method scope_index (line 243) | pub fn scope_index(&self) -> u32 {
    method set_index (line 248) | pub(crate) fn set_index(&self, index: u32) {
    method is_function (line 254) | pub fn is_function(&self) -> bool {
    method is_global (line 260) | pub fn is_global(&self) -> bool {
    method is_binding_mutable (line 270) | pub fn is_binding_mutable(&self, name: &JsString) -> Option<bool> {
    method get_binding (line 288) | pub fn get_binding(&self, name: &JsString) -> Option<BindingLocator> {
    method get_binding_reference (line 306) | pub fn get_binding_reference(&self, name: &JsString) -> Option<Identif...
    method access_binding (line 330) | pub fn access_binding(&self, name: &JsString, eval_or_with: bool) {
    method escape_this_in_enclosing_function_scope (line 359) | pub fn escape_this_in_enclosing_function_scope(&self) {
    method create_mutable_binding (line 382) | pub fn create_mutable_binding(&self, name: JsString, function_scope: b...
    method create_immutable_binding (line 411) | pub(crate) fn create_immutable_binding(&self, name: JsString, strict: ...
    method set_mutable_binding (line 431) | pub fn set_mutable_binding(
    method set_mutable_binding_var (line 470) | pub fn set_mutable_binding_var(
    method outer (line 519) | pub fn outer(&self) -> Option<&Self> {
    method unique_id (line 525) | pub fn unique_id(&self) -> u32 {
  method fmt (line 76) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
  method default (line 87) | fn default() -> Self {
  type Inner (line 100) | pub(crate) struct Inner {
  type ScopeContext (line 532) | struct ScopeContext {
    method next_unique_id (line 544) | fn next_unique_id(&self) -> u32 {
  type IdentifierReference (line 553) | pub struct IdentifierReference {
    method new (line 561) | pub(crate) fn new(locator: BindingLocator, lexical: bool, escapes: boo...
    method locator (line 571) | pub fn locator(&self) -> BindingLocator {
    method local (line 577) | pub fn local(&self) -> bool {
    method is_global_object (line 583) | pub fn is_global_object(&self) -> bool {
    method is_lexical (line 589) | pub fn is_lexical(&self) -> bool {
  type BindingLocator (line 596) | pub struct BindingLocator {
    method declarative (line 614) | pub(crate) const fn declarative(
    method global (line 629) | pub(super) const fn global(name: JsString) -> Self {
    method name (line 640) | pub const fn name(&self) -> &JsString {
    method is_global (line 646) | pub const fn is_global(&self) -> bool {
    method scope (line 652) | pub fn scope(&self) -> BindingLocatorScope {
    method set_scope (line 661) | pub fn set_scope(&mut self, scope: BindingLocatorScope) {
    method binding_index (line 671) | pub const fn binding_index(&self) -> u32 {
    method set_binding_index (line 676) | pub fn set_binding_index(&mut self, index: u32) {
    method unique_scope_id (line 682) | pub fn unique_scope_id(&self) -> u32 {
  type BindingLocatorError (line 689) | pub enum BindingLocatorError {
  type BindingLocatorScope (line 699) | pub enum BindingLocatorScope {
  type FunctionScopes (line 712) | pub struct FunctionScopes {
    method function_scope (line 724) | pub fn function_scope(&self) -> &Scope {
    method arguments_object_accessed (line 730) | pub fn arguments_object_accessed(&self) -> bool {
    method requires_function_scope (line 760) | pub fn requires_function_scope(&self) -> bool {
    method parameters_eval_scope (line 766) | pub fn parameters_eval_scope(&self) -> Option<&Scope> {
    method parameters_scope (line 772) | pub fn parameters_scope(&self) -> Option<&Scope> {
    method lexical_scope (line 778) | pub fn lexical_scope(&self) -> Option<&Scope> {
    method parameter_scope (line 784) | pub fn parameter_scope(&self) -> Scope {
    method body_scope (line 792) | pub(crate) fn body_scope(&self) -> Scope {
    method escape_all_bindings (line 806) | pub(crate) fn escape_all_bindings(&self) {
    method reorder_binding_indices (line 819) | pub(crate) fn reorder_binding_indices(&self) {
    method arbitrary (line 835) | fn arbitrary(_u: &mut arbitrary::Unstructured<'a>) -> arbitrary::Resul...

FILE: core/ast/src/scope_analyzer.rs
  function collect_bindings (line 40) | pub(crate) fn collect_bindings<'a, N>(
  function analyze_binding_escapes (line 67) | pub(crate) fn analyze_binding_escapes<'a, N>(
  type BindingEscapeAnalyzer (line 89) | struct BindingEscapeAnalyzer<'interner> {
  type BreakTy (line 97) | type BreakTy = &'static str;
  function visit_identifier_mut (line 99) | fn visit_identifier_mut(&mut self, node: &'ast mut Identifier) -> Contro...
  function visit_block_mut (line 106) | fn visit_block_mut(&mut self, node: &'ast mut Block) -> ControlFlow<Self...
  function visit_switch_mut (line 125) | fn visit_switch_mut(&mut self, node: &'ast mut Switch) -> ControlFlow<Se...
  function visit_with_mut (line 146) | fn visit_with_mut(&mut self, node: &'ast mut With) -> ControlFlow<Self::...
  function visit_catch_mut (line 161) | fn visit_catch_mut(&mut self, node: &'ast mut Catch) -> ControlFlow<Self...
  function visit_for_loop_mut (line 178) | fn visit_for_loop_mut(&mut self, node: &'ast mut ForLoop) -> ControlFlow...
  function visit_for_in_loop_mut (line 205) | fn visit_for_in_loop_mut(&mut self, node: &'ast mut ForInLoop) -> Contro...
  function visit_for_of_loop_mut (line 237) | fn visit_for_of_loop_mut(&mut self, node: &'ast mut ForOfLoop) -> Contro...
  function visit_function_declaration_mut (line 269) | fn visit_function_declaration_mut(
  function visit_generator_declaration_mut (line 281) | fn visit_generator_declaration_mut(
  function visit_async_function_declaration_mut (line 293) | fn visit_async_function_declaration_mut(
  function visit_async_generator_declaration_mut (line 305) | fn visit_async_generator_declaration_mut(
  function visit_function_expression_mut (line 317) | fn visit_function_expression_mut(
  function visit_generator_expression_mut (line 329) | fn visit_generator_expression_mut(
  function visit_async_function_expression_mut (line 341) | fn visit_async_function_expression_mut(
  function visit_async_generator_expression_mut (line 353) | fn visit_async_generator_expression_mut(
  function visit_arrow_function_mut (line 365) | fn visit_arrow_function_mut(
  function visit_async_arrow_function_mut (line 377) | fn visit_async_arrow_function_mut(
  function visit_class_declaration_mut (line 389) | fn visit_class_declaration_mut(
  function visit_class_expression_mut (line 409) | fn visit_class_expression_mut(
  function visit_class_element_mut (line 436) | fn visit_class_element_mut(
  function visit_object_method_definition_mut (line 477) | fn visit_object_method_definition_mut(
  function visit_export_declaration_mut (line 490) | fn visit_export_declaration_mut(
  function visit_module_mut (line 531) | fn visit_module_mut(&mut self, node: &'ast mut Module) -> ControlFlow<Se...
  function visit_function_like (line 543) | fn visit_function_like(
  type BindingCollectorVisitor (line 577) | struct BindingCollectorVisitor<'interner> {
  type BreakTy (line 586) | type BreakTy = &'static str;
  function visit_this_mut (line 588) | fn visit_this_mut(
  function visit_function_declaration_mut (line 599) | fn visit_function_declaration_mut(
  function visit_generator_declaration_mut (line 615) | fn visit_generator_declaration_mut(
  function visit_async_function_declaration_mut (line 631) | fn visit_async_function_declaration_mut(
  function visit_async_generator_declaration_mut (line 647) | fn visit_async_generator_declaration_mut(
  function visit_function_expression_mut (line 663) | fn visit_function_expression_mut(
  function visit_generator_expression_mut (line 684) | fn visit_generator_expression_mut(
  function visit_async_function_expression_mut (line 705) | fn visit_async_function_expression_mut(
  function visit_async_generator_expression_mut (line 726) | fn visit_async_generator_expression_mut(
  function visit_arrow_function_mut (line 747) | fn visit_arrow_function_mut(
  function visit_async_arrow_function_mut (line 763) | fn visit_async_arrow_function_mut(
  function visit_class_declaration_mut (line 779) | fn visit_class_declaration_mut(
  function visit_class_expression_mut (line 801) | fn visit_class_expression_mut(
  function visit_class_element_mut (line 832) | fn visit_class_element_mut(
  function visit_object_method_definition_mut (line 886) | fn visit_object_method_definition_mut(
  function visit_block_mut (line 908) | fn visit_block_mut(&mut self, node: &'ast mut Block) -> ControlFlow<Self...
  function visit_switch_mut (line 921) | fn visit_switch_mut(&mut self, node: &'ast mut Switch) -> ControlFlow<Se...
  function visit_with_mut (line 937) | fn visit_with_mut(&mut self, node: &'ast mut With) -> ControlFlow<Self::...
  function visit_catch_mut (line 947) | fn visit_catch_mut(&mut self, node: &'ast mut Catch) -> ControlFlow<Self...
  function visit_for_loop_mut (line 973) | fn visit_for_loop_mut(&mut self, node: &'ast mut ForLoop) -> ControlFlow...
  function visit_for_in_loop_mut (line 1011) | fn visit_for_in_loop_mut(&mut self, node: &'ast mut ForInLoop) -> Contro...
  function visit_for_of_loop_mut (line 1078) | fn visit_for_of_loop_mut(&mut self, node: &'ast mut ForOfLoop) -> Contro...
  function visit_module_mut (line 1145) | fn visit_module_mut(&mut self, node: &'ast mut Module) -> ControlFlow<Se...
  function visit_script_mut (line 1155) | fn visit_script_mut(&mut self, node: &'ast mut Script) -> ControlFlow<Se...
  function visit_function_like (line 1172) | fn visit_function_like(
  function optimize_scope_indices (line 1225) | pub(crate) fn optimize_scope_indices<'a, N>(node: &'a mut N, scope: &Scope)
  function optimize_scope_indices_function_constructor (line 1241) | pub(crate) fn optimize_scope_indices_function_constructor(
  type ScopeIndexVisitor (line 1259) | struct ScopeIndexVisitor {
    type BreakTy (line 1264) | type BreakTy = ();
    method visit_function_declaration_mut (line 1266) | fn visit_function_declaration_mut(
    method visit_generator_declaration_mut (line 1281) | fn visit_generator_declaration_mut(
    method visit_async_function_declaration_mut (line 1296) | fn visit_async_function_declaration_mut(
    method visit_async_generator_declaration_mut (line 1311) | fn visit_async_generator_declaration_mut(
    method visit_function_expression_mut (line 1326) | fn visit_function_expression_mut(
    method visit_generator_expression_mut (line 1341) | fn visit_generator_expression_mut(
    method visit_async_function_expression_mut (line 1356) | fn visit_async_function_expression_mut(
    method visit_async_generator_expression_mut (line 1371) | fn visit_async_generator_expression_mut(
    method visit_arrow_function_mut (line 1386) | fn visit_arrow_function_mut(
    method visit_async_arrow_function_mut (line 1401) | fn visit_async_arrow_function_mut(
    method visit_class_declaration_mut (line 1416) | fn visit_class_declaration_mut(
    method visit_class_expression_mut (line 1446) | fn visit_class_expression_mut(
    method visit_class_element_mut (line 1477) | fn visit_class_element_mut(
    method visit_object_method_definition_mut (line 1526) | fn visit_object_method_definition_mut(
    method visit_block_mut (line 1547) | fn visit_block_mut(&mut self, node: &'ast mut Block) -> ControlFlow<Se...
    method visit_switch_mut (line 1560) | fn visit_switch_mut(&mut self, node: &'ast mut Switch) -> ControlFlow<...
    method visit_with_mut (line 1576) | fn visit_with_mut(&mut self, node: &'ast mut With) -> ControlFlow<Self...
    method visit_catch_mut (line 1586) | fn visit_catch_mut(&mut self, node: &'ast mut Catch) -> ControlFlow<Se...
    method visit_for_loop_mut (line 1600) | fn visit_for_loop_mut(&mut self, node: &'ast mut ForLoop) -> ControlFl...
    method visit_for_in_loop_mut (line 1622) | fn visit_for_in_loop_mut(&mut self, node: &'ast mut ForInLoop) -> Cont...
    method visit_for_of_loop_mut (line 1647) | fn visit_for_of_loop_mut(&mut self, node: &'ast mut ForOfLoop) -> Cont...
    method visit_function_like (line 1674) | fn visit_function_like(
  function global_declaration_instantiation (line 1740) | fn global_declaration_instantiation(
  function block_declaration_instantiation (line 1817) | fn block_declaration_instantiation<'a, N>(
  function function_declaration_instantiation (line 1877) | fn function_declaration_instantiation(
  function module_instantiation (line 2204) | fn module_instantiation(module: &Module, env: &Scope, interner: &Interne...
  type EvalDeclarationBindings (line 2282) | pub struct EvalDeclarationBindings {
  function eval_declaration_instantiation_scope (line 2305) | pub(crate) fn eval_declaration_instantiation_scope(

FILE: core/ast/src/source.rs
  type Script (line 23) | pub struct Script {
    method new (line 30) | pub const fn new(statements: StatementList) -> Self {
    method statements (line 36) | pub const fn statements(&self) -> &StatementList {
    method statements_mut (line 41) | pub fn statements_mut(&mut self) -> &mut StatementList {
    method strict (line 48) | pub const fn strict(&self) -> bool {
    method analyze_scope (line 56) | pub fn analyze_scope(
    method analyze_scope_eval (line 72) | pub fn analyze_scope_eval(
    method arbitrary (line 136) | fn arbitrary(u: &mut arbitrary::Unstructured<'a>) -> arbitrary::Result...
  method visit_with (line 107) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 114) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  method to_indented_string (line 123) | fn to_indented_string(&self, interner: &Interner, indentation: usize) ->...
  method eq (line 129) | fn eq(&self, other: &Self) -> bool {
  type Module (line 150) | pub struct Module {
    method new (line 160) | pub fn new(items: ModuleItemList) -> Self {
    method items (line 169) | pub const fn items(&self) -> &ModuleItemList {
    method scope (line 176) | pub const fn scope(&self) -> &Scope {
    method analyze_scope (line 184) | pub fn analyze_scope(
  method visit_with (line 198) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 205) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/source_text.rs
  type SourceText (line 6) | pub struct SourceText {
    method with_capacity (line 13) | pub fn with_capacity(capacity: usize) -> Self {
    method cur_linear_position (line 21) | pub fn cur_linear_position(&self) -> LinearPosition {
    method get_code_points_from_pos (line 27) | pub fn get_code_points_from_pos(&self, pos: LinearPosition) -> &[u16] {
    method get_code_points_from_span (line 33) | pub fn get_code_points_from_span(&self, span: LinearSpan) -> &[u16] {
    method remove_last_code_point (line 39) | pub fn remove_last_code_point(&mut self) {
    method collect_code_point (line 49) | pub fn collect_code_point(&mut self, cp: u32) {
    method push (line 66) | fn push(&mut self, cp: u16) {
  constant DEFAULT_CAPACITY (line 71) | const DEFAULT_CAPACITY: usize = 4 * 1024;
  method default (line 74) | fn default() -> Self {

FILE: core/ast/src/statement/block.rs
  type Block (line 30) | pub struct Block {
    method statement_list (line 43) | pub const fn statement_list(&self) -> &StatementList {
    method scope (line 50) | pub const fn scope(&self) -> Option<&Scope> {
    method from (line 59) | fn from(list: T) -> Self {
  method to_indented_string (line 71) | fn to_indented_string(&self, interner: &Interner, indentation: usize) ->...
  method from (line 83) | fn from(block: Block) -> Self {
  method visit_with (line 89) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 96) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/statement/if.rs
  type If (line 30) | pub struct If {
    method cond (line 40) | pub const fn cond(&self) -> &Expression {
    method body (line 47) | pub const fn body(&self) -> &Statement {
    method else_node (line 53) | pub fn else_node(&self) -> Option<&Statement> {
    method new (line 60) | pub fn new(condition: Expression, body: Statement, else_node: Option<S...
  method to_indented_string (line 70) | fn to_indented_string(&self, interner: &Interner, indent: usize) -> Stri...
  method from (line 90) | fn from(if_stm: If) -> Self {
  method visit_with (line 96) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 108) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/statement/iteration/break.rs
  type Break (line 24) | pub struct Break {
    method new (line 31) | pub const fn new(label: Option<Sym>) -> Self {
    method label (line 37) | pub const fn label(&self) -> Option<Sym> {
  method to_interned_string (line 43) | fn to_interned_string(&self, interner: &Interner) -> String {
  method from (line 52) | fn from(break_smt: Break) -> Self {
  method visit_with (line 58) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 69) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/statement/iteration/continue.rs
  type Continue (line 22) | pub struct Continue {
    method new (line 29) | pub const fn new(label: Option<Sym>) -> Self {
    method label (line 35) | pub const fn label(&self) -> Option<Sym> {
  method to_interned_string (line 41) | fn to_interned_string(&self, interner: &Interner) -> String {
  method from (line 50) | fn from(cont: Continue) -> Self {
  method visit_with (line 56) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 67) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/statement/iteration/do_while_loop.rs
  type DoWhileLoop (line 24) | pub struct DoWhileLoop {
    method body (line 33) | pub const fn body(&self) -> &Statement {
    method cond (line 40) | pub const fn cond(&self) -> &Expression {
    method new (line 46) | pub fn new(body: Statement, condition: Expression) -> Self {
  method to_indented_string (line 55) | fn to_indented_string(&self, interner: &Interner, indentation: usize) ->...
  method from (line 65) | fn from(do_while: DoWhileLoop) -> Self {
  method visit_with (line 71) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 79) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/statement/iteration/for_in_loop.rs
  type ForInLoop (line 21) | pub struct ForInLoop {
    method new (line 39) | pub fn new(initializer: IterableLoopInitializer, target: Expression, b...
    method initializer (line 57) | pub const fn initializer(&self) -> &IterableLoopInitializer {
    method target (line 64) | pub const fn target(&self) -> &Expression {
    method body (line 71) | pub const fn body(&self) -> &Statement {
    method target_scope (line 78) | pub const fn target_scope(&self) -> Option<&Scope> {
    method scope (line 85) | pub const fn scope(&self) -> Option<&Scope> {
  method to_indented_string (line 91) | fn to_indented_string(&self, interner: &Interner, indentation: usize) ->...
  method from (line 105) | fn from(for_in: ForInLoop) -> Self {
  method visit_with (line 111) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 120) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/statement/iteration/for_loop.rs
  type ForLoop (line 25) | pub struct ForLoop {
    method new (line 34) | pub fn new(
    method init (line 48) | pub const fn init(&self) -> Option<&ForLoopInitializer> {
    method condition (line 55) | pub const fn condition(&self) -> Option<&Expression> {
    method final_expr (line 62) | pub const fn final_expr(&self) -> Option<&Expression> {
    method body (line 69) | pub const fn body(&self) -> &Statement {
  method to_indented_string (line 75) | fn to_indented_string(&self, interner: &Interner, indentation: usize) ->...
  method from (line 100) | fn from(for_loop: ForLoop) -> Self {
  method visit_with (line 106) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 122) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type InnerForLoop (line 143) | pub(crate) struct InnerForLoop {
    method new (line 154) | fn new(
    method init (line 181) | const fn init(&self) -> Option<&ForLoopInitializer> {
    method condition (line 187) | const fn condition(&self) -> Option<&Expression> {
    method final_expr (line 193) | const fn final_expr(&self) -> Option<&Expression> {
    method body (line 199) | const fn body(&self) -> &Statement {
  type ForLoopInitializer (line 215) | pub enum ForLoopInitializer {
    method from (line 270) | fn from(expr: Expression) -> Self {
    method from (line 277) | fn from(list: LexicalDeclaration) -> Self {
    method from (line 287) | fn from(list: VarDeclaration) -> Self {
  type ForLoopInitializerLexical (line 228) | pub struct ForLoopInitializerLexical {
    method new (line 239) | pub fn new(declaration: LexicalDeclaration, scope: Scope) -> Self {
    method declaration (line 246) | pub const fn declaration(&self) -> &LexicalDeclaration {
    method scope (line 253) | pub const fn scope(&self) -> &Scope {
  method to_interned_string (line 259) | fn to_interned_string(&self, interner: &Interner) -> String {
  method visit_with (line 293) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 304) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/statement/iteration/for_of_loop.rs
  type ForOfLoop (line 26) | pub struct ForOfLoop {
    method new (line 45) | pub fn new(
    method initializer (line 69) | pub const fn initializer(&self) -> &IterableLoopInitializer {
    method iterable (line 76) | pub const fn iterable(&self) -> &Expression {
    method body (line 83) | pub const fn body(&self) -> &Statement {
    method r#await (line 90) | pub const fn r#await(&self) -> bool {
    method iterable_scope (line 97) | pub const fn iterable_scope(&self) -> Option<&Scope> {
    method scope (line 104) | pub const fn scope(&self) -> Option<&Scope> {
  method to_indented_string (line 110) | fn to_indented_string(&self, interner: &Interner, indentation: usize) ->...
  method from (line 122) | fn from(for_of: ForOfLoop) -> Self {
  method visit_with (line 128) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 137) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/statement/iteration/mod.rs
  type IterableLoopInitializer (line 40) | pub enum IterableLoopInitializer {
  method to_interned_string (line 56) | fn to_interned_string(&self, interner: &Interner) -> String {
  method visit_with (line 71) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 84) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/statement/iteration/while_loop.rs
  type WhileLoop (line 23) | pub struct WhileLoop {
    method new (line 32) | pub fn new(condition: Expression, body: Statement) -> Self {
    method condition (line 42) | pub const fn condition(&self) -> &Expression {
    method body (line 49) | pub const fn body(&self) -> &Statement {
  method to_indented_string (line 55) | fn to_indented_string(&self, interner: &Interner, indentation: usize) ->...
  method from (line 66) | fn from(while_loop: WhileLoop) -> Self {
  method visit_with (line 72) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 80) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/statement/labelled.rs
  type LabelledItem (line 22) | pub enum LabelledItem {
    method to_indented_string (line 31) | pub(crate) fn to_indented_string(&self, interner: &Interner, indentati...
    method from (line 46) | fn from(f: FunctionDeclaration) -> Self {
    method from (line 52) | fn from(stmt: Statement) -> Self {
  method to_interned_string (line 40) | fn to_interned_string(&self, interner: &Interner) -> String {
  method visit_with (line 58) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 68) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type Labelled (line 88) | pub struct Labelled {
    method new (line 97) | pub fn new(item: LabelledItem, label: Sym) -> Self {
    method item (line 107) | pub const fn item(&self) -> &LabelledItem {
    method label (line 114) | pub const fn label(&self) -> Sym {
    method to_indented_string (line 118) | pub(crate) fn to_indented_string(&self, interner: &Interner, indentati...
  method to_interned_string (line 128) | fn to_interned_string(&self, interner: &Interner) -> String {
  method from (line 134) | fn from(labelled: Labelled) -> Self {
  method visit_with (line 140) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 148) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/statement/mod.rs
  type Statement (line 45) | pub enum Statement {
    method to_no_indent_string (line 127) | pub(super) fn to_no_indent_string(&self, interner: &Interner, indentat...
    method is_labelled_function (line 169) | pub fn is_labelled_function(&self) -> bool {
  method to_indented_string (line 191) | fn to_indented_string(&self, interner: &Interner, indentation: usize) ->...
  method visit_with (line 204) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 233) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/statement/return.rs
  type Return (line 29) | pub struct Return {
    method target (line 36) | pub const fn target(&self) -> Option<&Expression> {
    method new (line 42) | pub const fn new(expression: Option<Expression>) -> Self {
  method from (line 48) | fn from(return_smt: Return) -> Self {
  method to_interned_string (line 54) | fn to_interned_string(&self, interner: &Interner) -> String {
  method visit_with (line 63) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 74) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/statement/switch.rs
  type Case (line 25) | pub struct Case {
    method new (line 34) | pub const fn new(condition: Expression, body: StatementList) -> Self {
    method default (line 44) | pub const fn default(body: StatementList) -> Self {
    method condition (line 57) | pub const fn condition(&self) -> Option<&Expression> {
    method body (line 64) | pub const fn body(&self) -> &StatementList {
    method is_default (line 71) | pub const fn is_default(&self) -> bool {
  method visit_with (line 77) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 88) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type Switch (line 118) | pub struct Switch {
    method new (line 131) | pub fn new(val: Expression, cases: Box<[Case]>) -> Self {
    method val (line 147) | pub const fn val(&self) -> &Expression {
    method cases (line 154) | pub const fn cases(&self) -> &[Case] {
    method default (line 161) | pub fn default(&self) -> Option<&StatementList> {
    method scope (line 173) | pub const fn scope(&self) -> Option<&Scope> {
  method to_indented_string (line 179) | fn to_indented_string(&self, interner: &Interner, indentation: usize) ->...
  method from (line 207) | fn from(switch: Switch) -> Self {
  method visit_with (line 213) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 224) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/statement/throw.rs
  type Throw (line 26) | pub struct Throw {
    method target (line 33) | pub const fn target(&self) -> &Expression {
    method new (line 39) | pub const fn new(target: Expression) -> Self {
  method to_interned_string (line 45) | fn to_interned_string(&self, interner: &Interner) -> String {
  method from (line 51) | fn from(trw: Throw) -> Self {
  method visit_with (line 57) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 64) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/statement/try.rs
  type Try (line 29) | pub struct Try {
    method new (line 51) | pub const fn new(block: Block, handler: ErrorHandler) -> Self {
    method block (line 58) | pub const fn block(&self) -> &Block {
    method catch (line 65) | pub const fn catch(&self) -> Option<&Catch> {
    method finally (line 75) | pub const fn finally(&self) -> Option<&Finally> {
  type ErrorHandler (line 38) | pub enum ErrorHandler {
  method to_indented_string (line 84) | fn to_indented_string(&self, interner: &Interner, indentation: usize) ->...
  method from (line 104) | fn from(try_catch: Try) -> Self {
  method visit_with (line 110) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 124) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type Catch (line 145) | pub struct Catch {
    method new (line 158) | pub fn new(parameter: Option<Binding>, block: Block) -> Self {
    method parameter (line 174) | pub const fn parameter(&self) -> Option<&Binding> {
    method block (line 181) | pub const fn block(&self) -> &Block {
    method scope (line 188) | pub const fn scope(&self) -> &Scope {
  method to_indented_string (line 194) | fn to_indented_string(&self, interner: &Interner, indentation: usize) ->...
  method visit_with (line 210) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 220) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type Finally (line 235) | pub struct Finally {
    method block (line 243) | pub const fn block(&self) -> &Block {
    method from (line 259) | fn from(block: Block) -> Self {
  method to_indented_string (line 249) | fn to_indented_string(&self, interner: &Interner, indentation: usize) ->...
  method visit_with (line 265) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 272) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/statement/with.rs
  type With (line 21) | pub struct With {
    method new (line 32) | pub fn new(expression: Expression, statement: Statement) -> Self {
    method expression (line 42) | pub const fn expression(&self) -> &Expression {
    method statement (line 48) | pub const fn statement(&self) -> &Statement {
    method scope (line 54) | pub const fn scope(&self) -> &Scope {
  method from (line 60) | fn from(with: With) -> Self {
  method to_indented_string (line 66) | fn to_indented_string(&self, interner: &Interner, indentation: usize) ->...
  method visit_with (line 76) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 84) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/statement_list.rs
  type StatementListItem (line 22) | pub enum StatementListItem {
    method from (line 58) | fn from(stmt: Statement) -> Self {
    method from (line 65) | fn from(decl: Declaration) -> Self {
  method to_indented_string (line 40) | fn to_indented_string(&self, interner: &Interner, indentation: usize) ->...
  method visit_with (line 71) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 81) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...
  type StatementList (line 100) | pub struct StatementList {
    method new (line 115) | pub fn new<S>(statements: S, linear_pos_end: LinearPosition, strict: b...
    method statements (line 129) | pub const fn statements(&self) -> &[StatementListItem] {
    method strict (line 136) | pub const fn strict(&self) -> bool {
    method linear_pos_end (line 143) | pub const fn linear_pos_end(&self) -> LinearPosition {
    method from (line 150) | fn from(value: (Box<[StatementListItem]>, LinearPosition)) -> Self {
    method from (line 161) | fn from(value: (Vec<StatementListItem>, LinearPosition)) -> Self {
    method arbitrary (line 216) | fn arbitrary(u: &mut arbitrary::Unstructured<'a>) -> arbitrary::Result...
  method eq (line 107) | fn eq(&self, other: &Self) -> bool {
  type Target (line 171) | type Target = [StatementListItem];
  method deref (line 173) | fn deref(&self) -> &Self::Target {
  method to_indented_string (line 179) | fn to_indented_string(&self, interner: &Interner, indentation: usize) ->...
  method visit_with (line 193) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::BreakTy>
  method visit_with_mut (line 203) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow<V...

FILE: core/ast/src/visitor.rs
  type Visitor (line 225) | pub trait Visitor<'ast>: Sized {
    method visit (line 336) | fn visit<N: Into<NodeRef<'ast>>>(&mut self, node: N) -> ControlFlow<Se...
  type VisitorMut (line 450) | pub trait VisitorMut<'ast>: Sized {
    method visit (line 570) | fn visit<N: Into<NodeRefMut<'ast>>>(&mut self, node: N) -> ControlFlow...
  type VisitWith (line 684) | pub trait VisitWith {
    method visit_with (line 686) | fn visit_with<'a, V>(&'a self, visitor: &mut V) -> ControlFlow<V::Brea...
    method visit_with_mut (line 692) | fn visit_with_mut<'a, V>(&'a mut self, visitor: &mut V) -> ControlFlow...
    method visit_with (line 699) | fn visit_with<'a, V>(&'a self, _visitor: &mut V) -> ControlFlow<V::Bre...
    method visit_with_mut (line 706) | fn visit_with_mut<'a, V>(&'a mut self, _visitor: &mut V) -> ControlFlo...

FILE: core/ast/tests/scope.rs
  function empty_script_is_ok (line 18) | fn empty_script_is_ok() {
  function script_global_let (line 27) | fn script_global_let() {
  function script_global_const (line 54) | fn script_global_const() {
  function script_block_let (line 81) | fn script_block_let() {
  function script_function_mapped_arguments_not_accessed (line 122) | fn script_function_mapped_arguments_not_accessed() {
  function script_function_mapped_arguments_accessed (line 200) | fn script_function_mapped_arguments_accessed() {
  function multiple_scopes_with_same_parent_have_distinct_ids (line 284) | fn multiple_scopes_with_same_parent_have_distinct_ids() {
  function can_correlate_binding_to_scope (line 303) | fn can_correlate_binding_to_scope() {

FILE: core/engine/benches/bench_scripts/fibonacci.js
  function fib (line 4) | function fib(n) {

FILE: core/engine/benches/full.rs
  function create_realm (line 19) | fn create_realm(c: &mut Criterion) {

FILE: core/engine/src/bigint.rs
  type RawBigInt (line 16) | pub type RawBigInt = num_bigint::BigInt;
  type JsBigInt (line 30) | pub struct JsBigInt {
    method new (line 37) | pub fn new<T: Into<Self>>(value: T) -> Self {
    method zero (line 44) | pub fn zero() -> Self {
    method is_zero (line 53) | pub fn is_zero(&self) -> bool {
    method one (line 60) | pub fn one() -> Self {
    method is_one (line 69) | pub fn is_one(&self) -> bool {
    method to_string_radix (line 76) | pub fn to_string_radix(&self, radix: u32) -> String {
    method to_f64 (line 85) | pub fn to_f64(&self) -> f64 {
    method to_i128 (line 94) | pub fn to_i128(&self) -> i128 {
    method from_string_radix (line 101) | pub fn from_string_radix(buf: &str, radix: u32) -> Option<Self> {
    method from_js_string (line 113) | pub(crate) fn from_js_string(string: &JsString) -> Option<JsBigInt> {
    method from_string (line 131) | pub fn from_string(mut string: &str) -> Option<Self> {
    method same_value_zero (line 161) | pub fn same_value_zero(x: &Self, y: &Self) -> bool {
    method same_value (line 175) | pub fn same_value(x: &Self, y: &Self) -> bool {
    method equal (line 191) | pub fn equal(x: &Self, y: &Self) -> bool {
    method pow (line 197) | pub fn pow(x: &Self, y: &Self) -> JsResult<Self> {
    method shift_right (line 219) | pub fn shift_right(x: &Self, y: &Self) -> JsResult<Self> {
    method shift_left (line 245) | pub fn shift_left(x: &Self, y: &Self) -> JsResult<Self> {
    method mod_floor (line 275) | pub fn mod_floor(x: &Self, y: &Self) -> Self {
    method add (line 282) | pub fn add(x: &Self, y: &Self) -> Self {
    method sub (line 289) | pub fn sub(x: &Self, y: &Self) -> Self {
    method mul (line 296) | pub fn mul(x: &Self, y: &Self) -> Self {
    method div (line 303) | pub fn div(x: &Self, y: &Self) -> Self {
    method rem (line 310) | pub fn rem(x: &Self, y: &Self) -> Self {
    method bitand (line 317) | pub fn bitand(x: &Self, y: &Self) -> Self {
    method bitor (line 324) | pub fn bitor(x: &Self, y: &Self) -> Self {
    method bitxor (line 331) | pub fn bitxor(x: &Self, y: &Self) -> Self {
    method neg (line 338) | pub fn neg(x: &Self) -> Self {
    method not (line 345) | pub fn not(x: &Self) -> Self {
    method as_inner (line 352) | pub fn as_inner(&self) -> &RawBigInt {
    method into_raw (line 363) | pub(crate) fn into_raw(self) -> NonNull<RawBigInt> {
    method from_raw (line 380) | pub(crate) unsafe fn from_raw(ptr: *const RawBigInt) -> Self {
    method from (line 397) | fn from(value: RawBigInt) -> Self {
    method from (line 406) | fn from(value: Box<RawBigInt>) -> Self {
    method from (line 415) | fn from(value: i8) -> Self {
    method from (line 424) | fn from(value: u8) -> Self {
    method from (line 433) | fn from(value: i16) -> Self {
    method from (line 442) | fn from(value: u16) -> Self {
    method from (line 451) | fn from(value: i32) -> Self {
    method from (line 460) | fn from(value: u32) -> Self {
    method from (line 469) | fn from(value: i64) -> Self {
    method from (line 478) | fn from(value: u64) -> Self {
    method from (line 487) | fn from(value: i128) -> Self {
    method from (line 496) | fn from(value: u128) -> Self {
    method from (line 505) | fn from(value: isize) -> Self {
    method from (line 514) | fn from(value: usize) -> Self {
    type Error (line 533) | type Error = TryFromF64Error;
    method try_from (line 536) | fn try_from(n: f64) -> Result<Self, Self::Error> {
    method eq (line 549) | fn eq(&self, other: &i32) -> bool {
    method eq (line 563) | fn eq(&self, other: &f64) -> bool {
  method fmt (line 390) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
  type TryFromF64Error (line 523) | pub struct TryFromF64Error;
  method fmt (line 527) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
  function eq (line 556) | fn eq(&self, other: &JsBigInt) -> bool {
  function eq (line 571) | fn eq(&self, other: &JsBigInt) -> bool {

FILE: core/engine/src/builtins/array/array_iterator.rs
  type ArrayIterator (line 31) | pub(crate) struct ArrayIterator {
    method new (line 64) | fn new(array: JsObject, kind: PropertyNameKind) -> Self {
    method create_array_iterator (line 81) | pub(crate) fn create_array_iterator(
    method next (line 102) | pub(crate) fn next(this: &JsValue, _: &[JsValue], context: &mut Contex...
  method init (line 40) | fn init(realm: &Realm) {
  method get (line 58) | fn get(intrinsics: &Intrinsics) -> JsObject {

FILE: core/engine/src/builtins/array/from_async.rs
  method from_async (line 26) | pub(crate) fn from_async(
  type GlobalState (line 198) | struct GlobalState {
  type AsyncIteratorStateMachine (line 206) | enum AsyncIteratorStateMachine {
  function from_async_iterator (line 233) | fn from_async_iterator(
  type ArrayLikeStateMachine (line 467) | enum ArrayLikeStateMachine {
  function from_array_like (line 490) | fn from_array_like(

FILE: core/engine/src/builtins/array/mod.rs
  type Direction (line 51) | pub(crate) enum Direction {
  type Array (line 59) | pub(crate) struct Array;
    method set_length (line 295) | fn set_length(o: &JsObject, len: u64, context: &mut Context) -> JsResu...
    method array_create (line 322) | pub(crate) fn array_create(
    method create_array_from_list (line 391) | pub(crate) fn create_array_from_list<I>(elements: I, context: &Context...
    method is_concat_spreadable (line 422) | fn is_concat_spreadable(o: &JsValue, context: &mut Context) -> JsResul...
    method get_species (line 451) | fn get_species(this: &JsValue, _: &[JsValue], _: &mut Context) -> JsRe...
    method array_species_create (line 460) | pub(crate) fn array_species_create(
    method from (line 531) | pub(crate) fn from(
    method is_array (line 677) | pub(crate) fn is_array(
    method of (line 697) | pub(crate) fn of(this: &JsValue, args: &[JsValue], context: &mut Conte...
    method at (line 741) | pub(crate) fn at(this: &JsValue, args: &[JsValue], context: &mut Conte...
    method concat (line 778) | pub(crate) fn concat(
    method push (line 859) | pub(crate) fn push(
    method pop (line 902) | pub(crate) fn pop(this: &JsValue, _: &[JsValue], context: &mut Context...
    method for_each (line 942) | pub(crate) fn for_each(
    method join (line 986) | pub(crate) fn join(
    method to_string (line 1042) | pub(crate) fn to_string(
    method reverse (line 1072) | pub(crate) fn reverse(
    method to_reversed (line 1140) | pub(crate) fn to_reversed(
    method shift (line 1185) | pub(crate) fn shift(this: &JsValue, _: &[JsValue], context: &mut Conte...
    method unshift (line 1275) | pub(crate) fn unshift(
    method every (line 1345) | pub(crate) fn every(
    method map (line 1395) | pub(crate) fn map(
    method index_of (line 1442) | pub(crate) fn index_of(
    method last_index_of (line 1527) | pub(crate) fn last_index_of(
    method find (line 1595) | pub(crate) fn find(
    method find_index (line 1636) | pub(crate) fn find_index(
    method find_last (line 1675) | pub(crate) fn find_last(
    method find_last_index (line 1714) | pub(crate) fn find_last_index(
    method flat (line 1754) | pub(crate) fn flat(
    method flat_map (line 1811) | pub(crate) fn flat_map(
    method flatten_into_array (line 1853) | fn flatten_into_array(
    method fill (line 1968) | pub(crate) fn fill(
    method includes_value (line 2016) | pub(crate) fn includes_value(
    method slice (line 2093) | pub(crate) fn slice(
    method to_locale_string (line 2159) | pub(crate) fn to_locale_string(
    method get_delete_count (line 2239) | fn get_delete_count(
    method splice (line 2280) | pub(crate) fn splice(
    method splice_internal (line 2292) | pub(crate) fn splice_internal(
    method to_spliced (line 2427) | fn to_spliced(this: &JsValue, args: &[JsValue], context: &mut Context)...
    method filter (line 2526) | pub(crate) fn filter(
    method some (line 2590) | pub(crate) fn some(
    method sort_indexed_properties (line 2631) | pub(crate) fn sort_indexed_properties<F>(
    method sort (line 2699) | pub(crate) fn sort(
    method to_sorted (line 2762) | pub(crate) fn to_sorted(
    method reduce (line 2819) | pub(crate) fn reduce(
    method reduce_right (line 2916) | pub(crate) fn reduce_right(
    method copy_within (line 3010) | pub(crate) fn copy_within(
    method values (line 3098) | pub(crate) fn values(
    method keys (line 3124) | pub(crate) fn keys(this: &JsValue, _: &[JsValue], context: &mut Contex...
    method entries (line 3146) | pub(crate) fn entries(
    method with (line 3165) | pub(crate) fn with(
    method get_relative_start (line 3227) | pub(super) fn get_relative_start(
    method get_relative_end (line 3250) | pub(super) fn get_relative_end(
    method unscopables_object (line 3286) | pub(crate) fn unscopables_object() -> JsObject {
  method internal_methods (line 73) | fn internal_methods(&self) -> &'static InternalObjectMethods {
  method init (line 79) | fn init(realm: &Realm) {
  method get (line 188) | fn get(intrinsics: &Intrinsics) -> JsObject {
  constant NAME (line 194) | const NAME: JsString = StaticJsStrings::ARRAY;
  constant PROTOTYPE_STORAGE_SLOTS (line 198) | const PROTOTYPE_STORAGE_SLOTS: usize = 41;
  constant CONSTRUCTOR_STORAGE_SLOTS (line 199) | const CONSTRUCTOR_STORAGE_SLOTS: usize = 6;
  constant CONSTRUCTOR_ARGUMENTS (line 201) | const CONSTRUCTOR_ARGUMENTS: usize = 1;
  constant STANDARD_CONSTRUCTOR (line 203) | const STANDARD_CONSTRUCTOR: fn(&StandardConstructors) -> &StandardConstr...
  method constructor (line 206) | fn constructor(
  function compare_array_elements (line 3338) | fn compare_array_elements(
  function find_via_predicate (line 3388) | pub(crate) fn find_via_predicate(
  function array_exotic_define_own_property (line 3445) | fn array_exotic_define_own_property(
  function array_set_length (line 3555) | fn array_set_length(

FILE: core/engine/src/builtins/array/tests.rs
  function is_array (line 9) | fn is_array() {
  function of (line 29) | fn of() {
  function concat (line 50) | fn concat() {
  function copy_within (line 65) | fn copy_within() {
  function join (line 76) | fn join() {
  function to_string (line 86) | fn to_string() {
  function every (line 95) | fn every() {
  function find (line 117) | fn find() {
  function find_index (line 125) | fn find_index() {
  function flat (line 134) | fn flat() {
  function flat_map (line 155) | fn flat_map() {
  function flat_map_with_hole (line 174) | fn flat_map_with_hole() {
  function flat_map_not_callable (line 189) | fn flat_map_not_callable() {
  function push (line 201) | fn push() {
  function pop (line 212) | fn pop() {
  function shift (line 228) | fn shift() {
  function unshift (line 244) | fn unshift() {
  function reverse (line 255) | fn reverse() {
  function index_of (line 265) | fn index_of() {
  function last_index_of (line 306) | fn last_index_of() {
  function fill_obj_ref (line 347) | fn fill_obj_ref() {
  function fill (line 359) | fn fill() {
  function includes_value (line 383) | fn includes_value() {
  function map (line 408) | fn map() {
  function slice (line 446) | fn slice() {
  function for_each (line 473) | fn for_each() {
  function for_each_push_value (line 493) | fn for_each_push_value() {
  function filter (line 510) | fn filter() {
  function some (line 556) | fn some() {
  function reduce (line 598) | fn reduce() {
  function reduce_right (line 670) | fn reduce_right() {
  function call_array_constructor_with_one_argument (line 751) | fn call_array_constructor_with_one_argument() {
  function array_values_simple (line 761) | fn array_values_simple() {
  function array_keys_simple (line 774) | fn array_keys_simple() {
  function array_entries_simple (line 787) | fn array_entries_simple() {
  function array_values_empty (line 804) | fn array_values_empty() {
  function array_values_sparse (line 817) | fn array_values_sparse() {
  function array_symbol_iterator (line 832) | fn array_symbol_iterator() {
  function array_values_symbol_iterator (line 845) | fn array_values_symbol_iterator() {
  function array_spread_arrays (line 853) | fn array_spread_arrays() {
  function array_spread_non_iterable (line 866) | fn array_spread_non_iterable() {
  function get_relative_start (line 875) | fn get_relative_start() {
  function get_relative_end (line 903) | fn get_relative_end() {
  function array_length_is_not_enumerable (line 931) | fn array_length_is_not_enumerable() {
  function array_sort (line 938) | fn array_sort() {
  function array_of_neg_zero (line 958) | fn array_of_neg_zero() {

FILE: core/engine/src/builtins/array_buffer/mod.rs
  type AlignedVec (line 46) | pub type AlignedVec<T> = AVec<T, ConstAlign<64>>;
  type AlignedBox (line 47) | pub(crate) type AlignedBox<T> = ABox<T, ConstAlign<64>>;
  type BufferRef (line 50) | pub(crate) enum BufferRef<B, S> {
  function bytes (line 61) | pub(crate) fn bytes(&self, ordering: Ordering) -> Option<SliceRef<'_>> {
  function bytes_with_len (line 73) | pub(crate) fn bytes_with_len(&self, len: usize) -> Option<SliceRef<'_>> {
  function is_fixed_len (line 80) | pub(crate) fn is_fixed_len(&self) -> bool {
  type BufferRefMut (line 89) | pub(crate) enum BufferRefMut<B, S> {
  function bytes (line 99) | pub(crate) fn bytes(&mut self, ordering: Ordering) -> Option<SliceRefMut...
  function bytes_with_len (line 112) | pub(crate) fn bytes_with_len(&mut self, len: usize) -> Option<SliceRefMu...
  type BufferObject (line 128) | pub(crate) enum BufferObject {
    method as_buffer (line 152) | pub(crate) fn as_buffer(
    method as_buffer_mut (line 166) | pub(crate) fn as_buffer_mut(
    method equals (line 182) | pub(crate) fn equals(lhs: &Self, rhs: &Self) -> bool {
  method from (line 134) | fn from(value: BufferObject) -> Self {
  method from (line 143) | fn from(value: BufferObject) -> Self {
  type ArrayBuffer (line 202) | pub struct ArrayBuffer {
    method from_data (line 215) | pub(crate) fn from_data(data: AlignedVec<u8>, detach_key: JsValue) -> ...
    method len (line 223) | pub(crate) fn len(&self) -> usize {
    method bytes (line 227) | pub(crate) fn bytes(&self) -> Option<&[u8]> {
    method bytes_mut (line 231) | pub(crate) fn bytes_mut(&mut self) -> Option<&mut [u8]> {
    method vec_mut (line 235) | pub(crate) fn vec_mut(&mut self) -> Option<&mut AlignedVec<u8>> {
    method set_max_byte_length (line 240) | pub(crate) fn set_max_byte_length(&mut self, max_byte_len: u64) -> Opt...
    method bytes_with_len (line 246) | pub(crate) fn bytes_with_len(&self, len: usize) -> Option<&[u8]> {
    method bytes_with_len_mut (line 256) | pub(crate) fn bytes_with_len_mut(&mut self, len: usize) -> Option<&mut...
    method data (line 266) | pub fn data(&self) -> Option<&[u8]> {
    method resize (line 271) | pub fn resize(&mut self, new_byte_length: u64) -> JsResult<()> {
    method detach (line 302) | pub fn detach(&mut self, key: &JsValue) -> JsResult<Option<AlignedVec<...
    method is_detached (line 318) | pub(crate) const fn is_detached(&self) -> bool {
    method is_fixed_len (line 324) | pub(crate) fn is_fixed_len(&self) -> bool {
    method is_view (line 462) | fn is_view(_: &JsValue, args: &[JsValue], _context: &mut Context) -> J...
    method get_species (line 480) | fn get_species(this: &JsValue, _: &[JsValue], _: &mut Context) -> JsRe...
    method get_byte_length (line 491) | pub(crate) fn get_byte_length(
    method get_max_byte_length (line 517) | pub(crate) fn get_max_byte_length(
    method get_resizable (line 551) | pub(crate) fn get_resizable(
    method get_detached (line 576) | fn get_detached(
    method js_resize (line 600) | pub(crate) fn js_resize(
    method slice (line 648) | fn slice(this: &JsValue, args: &[JsValue], context: &mut Context) -> J...
    method transfer (line 754) | fn transfer<const TO_FIXED_LENGTH: bool>(
    method allocate (line 868) | pub(crate) fn allocate(
  method init (line 330) | fn init(realm: &Realm) {
  method get (line 406) | fn get(intrinsics: &Intrinsics) -> JsObject {
  constant NAME (line 412) | const NAME: JsString = StaticJsStrings::ARRAY_BUFFER;
  constant PROTOTYPE_STORAGE_SLOTS (line 416) | const PROTOTYPE_STORAGE_SLOTS: usize = 13;
  constant CONSTRUCTOR_STORAGE_SLOTS (line 417) | const CONSTRUCTOR_STORAGE_SLOTS: usize = 3;
  constant CONSTRUCTOR_ARGUMENTS (line 418) | const CONSTRUCTOR_ARGUMENTS: usize = 1;
  constant STANDARD_CONSTRUCTOR (line 420) | const STANDARD_CONSTRUCTOR: fn(&StandardConstructors) -> &StandardConstr...
  method constructor (line 429) | fn constructor(
  function get_max_byte_len (line 923) | fn get_max_byte_len(options: &JsValue, context: &mut Context) -> JsResul...
  function create_byte_data_block (line 947) | pub(crate) fn create_byte_data_block(

FILE: core/engine/src/builtins/array_buffer/shared.rs
  type SharedArrayBuffer (line 31) | pub struct SharedArrayBuffer {
    method empty (line 63) | pub fn empty() -> Self {
    method len (line 70) | pub(crate) fn len(&self, ordering: Ordering) -> usize {
    method bytes (line 78) | pub(crate) fn bytes(&self, ordering: Ordering) -> &[AtomicU8] {
    method bytes_with_len (line 84) | pub(crate) fn bytes_with_len(&self, len: usize) -> &[AtomicU8] {
    method as_ptr (line 89) | pub(crate) fn as_ptr(&self) -> *const AtomicU8 {
    method is_fixed_len (line 93) | pub(crate) fn is_fixed_len(&self) -> bool {
    method get_species (line 209) | fn get_species(this: &JsValue, _: &[JsValue], _: &mut Context) -> JsRe...
    method get_byte_length (line 220) | pub(crate) fn get_byte_length(
    method get_growable (line 247) | pub(crate) fn get_growable(
    method get_max_byte_length (line 271) | pub(crate) fn get_max_byte_length(
    method grow (line 299) | pub(crate) fn grow(
    method slice (line 397) | fn slice(this: &JsValue, args: &[JsValue], context: &mut Context) -> J...
    method allocate (line 490) | pub(crate) fn allocate(
  type Inner (line 38) | struct Inner {
  method default (line 52) | fn default() -> Self {
  method init (line 99) | fn init(realm: &Realm) {
  method get (line 153) | fn get(intrinsics: &Intrinsics) -> JsObject {
  constant NAME (line 159) | const NAME: JsString = StaticJsStrings::SHARED_ARRAY_BUFFER;
  constant CONSTRUCTOR_ARGUMENTS (line 163) | const CONSTRUCTOR_ARGUMENTS: usize = 1;
  constant PROTOTYPE_STORAGE_SLOTS (line 164) | const PROTOTYPE_STORAGE_SLOTS: usize = 9;
  constant CONSTRUCTOR_STORAGE_SLOTS (line 165) | const CONSTRUCTOR_STORAGE_SLOTS: usize = 2;
  constant STANDARD_CONSTRUCTOR (line 167) | const STANDARD_CONSTRUCTOR: fn(&StandardConstructors) -> &StandardConstr...
  method constructor (line 176) | fn constructor(
  function create_shared_byte_data_block (line 562) | pub(crate) fn create_shared_byte_data_block(

FILE: core/engine/src/builtins/array_buffer/tests.rs
  function create_byte_data_block (line 5) | fn create_byte_data_block() {
  function create_shared_byte_data_block (line 16) | fn create_shared_byte_data_block() {
  function resize (line 27) | fn resize() {
  function get_values (line 44) | fn get_values() {
  function sort (line 87) | fn sort() {
  function sort_negative_zero (line 143) | fn sort_negative_zero() {
  function shared_array_buffer_slice (line 167) | fn shared_array_buffer_slice() {
  function shared_array_buffer_slice_partial (line 189) | fn shared_array_buffer_slice_partial() {
  function shared_to_regular_typed_array_set (line 211) | fn shared_to_regular_typed_array_set() {
  function regular_to_shared_typed_array_set (line 233) | fn regular_to_shared_typed_array_set() {
  function shared_typed_array_copy_within (line 255) | fn shared_typed_array_copy_within() {
  function shared_typed_array_copy_within_backward (line 276) | fn shared_typed_array_copy_within_backward() {
  function shared_array_buffer_slice_empty (line 298) | fn shared_array_buffer_slice_empty() {

FILE: core/engine/src/builtins/array_buffer/utils.rs
  type BytesConstPtr (line 14) | pub(crate) enum BytesConstPtr {
    method add (line 21) | pub(crate) unsafe fn add(self, count: usize) -> Self {
  type BytesMutPtr (line 33) | pub(crate) enum BytesMutPtr {
    method add (line 40) | pub(crate) unsafe fn add(self, count: usize) -> Self {
  type SliceRef (line 52) | pub(crate) enum SliceRef<'a> {
  function len (line 59) | pub(crate) fn len(&self) -> usize {
  function subslice (line 67) | pub(crate) fn subslice<I>(&self, index: I) -> SliceRef<'_>
  function to_vec (line 81) | pub(crate) fn to_vec(self) -> Vec<u8> {
  function addr (line 106) | pub(crate) fn addr(&self) -> usize {
  function as_ptr (line 114) | pub(crate) fn as_ptr(&self) -> BytesConstPtr {
  function get_value (line 131) | pub(crate) unsafe fn get_value(
  function clone (line 195) | pub(crate) fn clone(&self, context: &mut Context) -> JsResult<JsObject<A...
  function from (line 241) | fn from(value: &'a [u8]) -> Self {
  function from (line 247) | fn from(value: &'a [AtomicU8]) -> Self {
  type SliceRefMut (line 253) | pub(crate) enum SliceRefMut<'a> {
  function len (line 260) | pub(crate) fn len(&self) -> usize {
  function subslice (line 269) | pub(crate) fn subslice<I>(&self, index: I) -> SliceRef<'_>
  function subslice_mut (line 282) | pub(crate) fn subslice_mut<I>(&mut self, index: I) -> SliceRefMut<'_>
  functio
Condensed preview — 961 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (9,707K chars).
[
  {
    "path": ".cargo/config.toml",
    "chars": 197,
    "preview": "# TODO: track https://github.com/rust-lang/rust/issues/141626 for a resolution\n[target.x86_64-pc-windows-msvc]\nrustflags"
  },
  {
    "path": ".config/nextest.toml",
    "chars": 83,
    "preview": "[profile.ci]\n# Don't fail fast in CI to run the full test suite.\nfail-fast = false\n"
  },
  {
    "path": ".editorconfig",
    "chars": 317,
    "preview": "root = true\n\n[*]\nend_of_line = lf\ncharset = utf-8\ntrim_trailing_whitespace = true\ninsert_final_newline = true\nindent_siz"
  },
  {
    "path": ".gitattributes",
    "chars": 781,
    "preview": "# Handle line endings automatically for files detected as text\n# and leave all files detected as binary untouched.\n* tex"
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 21,
    "preview": "open_collective: boa\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 1545,
    "preview": "---\nname: \"\\U0001F41B Bug report\"\nabout: Create a report to help us improve\ntitle: \"\"\ntype: \"Bug\"\nassignees: \"\"\n---\n\n<!-"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 160,
    "preview": "blank_issues_enabled: false\ncontact_links:\n  - name: Matrix space\n    url: https://matrix.to/#/#boa:matrix.org\n    about"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/custom.md",
    "chars": 300,
    "preview": "---\nname: Custom\nabout: Open an issue in the repo that is neither a bug or a feature.\ntitle: \"\"\nlabels: \"\"\ntype: \"\"\nassi"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "chars": 1184,
    "preview": "---\nname: \"\\U0001F680 Feature request\"\nabout: Suggest a new ECMAScript feature to be implemented, or a new capability of"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 219,
    "preview": "<!---\nThank you for contributing to Boa! Please fill out the template below, and remove or add any\ninformation as you fe"
  },
  {
    "path": ".github/codecov.yml",
    "chars": 152,
    "preview": "github_checks:\n  annotations: false\n\ncoverage:\n  status:\n    project:\n      default:\n        threshold: 5% # allow 5% co"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 883,
    "preview": "version: 2\nupdates:\n  - package-ecosystem: github-actions\n    directory: /\n    schedule:\n      interval: weekly\n    labe"
  },
  {
    "path": ".github/labeler.yml",
    "chars": 1476,
    "preview": "C-Actions:\n- changed-files:\n  - any-glob-to-any-file:\n    - '.github/**'\n\nC-AST:\n- changed-files:\n  - any-glob-to-any-fi"
  },
  {
    "path": ".github/release.yml",
    "chars": 463,
    "preview": "# .github/release.yml\n\nchangelog:\n  exclude:\n    authors:\n      - dependabot\n  categories:\n    - title: Feature Enhancem"
  },
  {
    "path": ".github/workflows/codeql.yml",
    "chars": 958,
    "preview": "name: \"CodeQL SAST Scanning\"\n\non:\n  workflow_dispatch:\n  schedule:\n    - cron: '0 0 * * 0' # Run weekly on Sundays\n\nperm"
  },
  {
    "path": ".github/workflows/labeler.yml",
    "chars": 305,
    "preview": "name: \"Pull Request Labeler\"\non:\n- pull_request_target\n\npermissions:\n  contents: read\n\njobs:\n  labeler:\n    permissions:"
  },
  {
    "path": ".github/workflows/nightly_build.yml",
    "chars": 1760,
    "preview": "name: Nightly Build\npermissions:\n  contents: read\n\n# Schedule this workflow to run at midnight every day\non:\n  schedule:"
  },
  {
    "path": ".github/workflows/pr_management.yml",
    "chars": 2618,
    "preview": "name: PR Management\n\non:\n  pull_request_target:\n    types: [opened, reopened, synchronize, closed]\n\npermissions:\n  conte"
  },
  {
    "path": ".github/workflows/pull_request.yml",
    "chars": 1124,
    "preview": "name: Benchmarks\n\non:\n  pull_request:\n    branches:\n      - main\n      - releases/**\n\npermissions:\n  contents: read\n\ncon"
  },
  {
    "path": ".github/workflows/release.yml",
    "chars": 4684,
    "preview": "name: Publish Release\non:\n  release:\n    types: [published]\n\npermissions:\n  contents: read\n\njobs:\n  publish:\n    name: P"
  },
  {
    "path": ".github/workflows/rust.yml",
    "chars": 15356,
    "preview": "name: Continuous integration\n\non:\n  pull_request:\n    branches:\n      - main\n      - releases/**\n  push:\n    branches:\n "
  },
  {
    "path": ".github/workflows/security_audit.yml",
    "chars": 474,
    "preview": "name: Security audit\non:\n  schedule:\n    - cron: \"0 0 * * *\"\n\npermissions:\n  contents: read\njobs:\n  audit:\n    runs-on: "
  },
  {
    "path": ".github/workflows/test262.yml",
    "chars": 2741,
    "preview": "name: test262\n\non:\n  pull_request:\n    branches:\n      - main\n      - releases/**\n\npermissions:\n  contents: read\n\nconcur"
  },
  {
    "path": ".github/workflows/test262_comment.yml",
    "chars": 1487,
    "preview": "name: test262_comment\n\non:\n  workflow_run:\n    workflows: [\"test262\"]\n    types:\n      - completed\n\npermissions:\n  conte"
  },
  {
    "path": ".github/workflows/test262_release.yml",
    "chars": 2028,
    "preview": "name: Update Test262 Results\n\non:\n  release:\n    types:\n      - published\n  push:\n    branches:\n      - main\n\npermission"
  },
  {
    "path": ".github/workflows/webassembly.yml",
    "chars": 2197,
    "preview": "name: Webassembly demo\n\non:\n  pull_request:\n    branches:\n      - main\n      - releases/**\n  push:\n    branches:\n      -"
  },
  {
    "path": ".gitignore",
    "chars": 522,
    "preview": "# IDE\n.idea/\n*.iml\n\n# Vim\n*.*.swp\n*.*.swo\n\n# Build\ntarget\ndist\n**/*.rs.bk\nnode_modules\n.DS_Store\nyarn-error.log\n.vscode/"
  },
  {
    "path": ".husky/pre-push",
    "chars": 334,
    "preview": "#!/bin/sh\n\ntarget=$(rustc -vV | awk '/^host/ { print $2 }' | tr '[:lower:]' '[:upper:]' | tr '-' '_')\nexport CARGO_TARGE"
  },
  {
    "path": ".prettierignore",
    "chars": 338,
    "preview": "# Ignore artifacts:\n*.rs\n*.yml\ntarget\nnode_modules\ncore/engine/benches/bench_scripts/mini_js.js\ncore/engine/benches/benc"
  },
  {
    "path": ".vscode/launch.json",
    "chars": 1975,
    "preview": "{\n  // Use IntelliSense to learn about possible attributes.\n  // Hover to view descriptions of existing attributes.\n  //"
  },
  {
    "path": ".vscode/tasks.json",
    "chars": 2549,
    "preview": "{\n  // See https://go.microsoft.com/fwlink/?LinkId=733558\n  // for the documentation about the tasks.json format\n  \"vers"
  },
  {
    "path": "ABOUT.md",
    "chars": 2254,
    "preview": "# About Boa\n\nBoa is an open-source, experimental ECMAScript Engine written in Rust for\nlexing, parsing and executing ECM"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 184527,
    "preview": "# CHANGELOG\n\n## [v0.21.0 (2025-10-21)](https://github.com/boa-dev/boa/compare/v0.20...v0.21)\n\n### Feature Enhancements\n\n"
  },
  {
    "path": "CODEOWNERS",
    "chars": 218,
    "preview": "# Fallback to all maintainers for common directories.\n\n* @boa-dev/maintainers\n\n# Owned components\n\ncore/engine/src/built"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 5555,
    "preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make participa"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 8271,
    "preview": "# Contributing to Boa\n\nBoa welcomes contribution from everyone. Here are the guidelines if you are\nthinking of helping o"
  },
  {
    "path": "Cargo.toml",
    "chars": 8333,
    "preview": "[workspace]\nresolver = \"2\"\nmembers = [\n    # CORE\n    \"core/*\",\n    # FFI\n    \"ffi/*\",\n    # TESTS\n    \"tests/*\",\n    # "
  },
  {
    "path": "LICENSE-MIT",
    "chars": 1071,
    "preview": "MIT License\n\nCopyright (c) 2019 Jason Williams\n\nPermission is hereby granted, free of charge, to any person obtaining a "
  },
  {
    "path": "LICENSE-UNLICENSE",
    "chars": 1210,
    "preview": "This is free and unencumbered software released into the public domain.\n\nAnyone is free to copy, modify, publish, use, c"
  },
  {
    "path": "Makefile.toml",
    "chars": 1117,
    "preview": "extend = [\n    { path = \"./make/ci.toml\"}\n]\n\n[config]\ndefault_to_workspace = false\n\n[tasks.run-ci]\ndescription = \"Run Bo"
  },
  {
    "path": "PR_MESSAGE_EXPECT_EXPRESSION.md",
    "chars": 2997,
    "preview": "# fix(parser): replace expect_expression panic with try_into_expression error handling\n\n## Summary\n\nReplaces all uses of"
  },
  {
    "path": "README.md",
    "chars": 7517,
    "preview": "# Boa\n\n<p align=\"center\">\n  <a href=\"https://boajs.dev/\">\n    <picture>\n      <source\n        media=\"(prefers-color-sche"
  },
  {
    "path": "SECURITY.md",
    "chars": 644,
    "preview": "# Security Policy\n\n## Supported Versions\n\nUntil we reach the 1.0 version, we only support the latest 0.x release and the"
  },
  {
    "path": "benches/Cargo.toml",
    "chars": 377,
    "preview": "[package]\nname = \"boa_benches\"\nversion = \"0.1.0\"\nedition = \"2024\"\npublish = false\n\n[dependencies]\nboa_engine = { workspa"
  },
  {
    "path": "benches/benches/scripts.rs",
    "chars": 2858,
    "preview": "#![allow(unused_crate_dependencies, missing_docs)]\nuse boa_engine::{\n    Context, JsValue, Source, js_string, optimizer:"
  },
  {
    "path": "benches/scripts/basic/call-loop.js",
    "chars": 88,
    "preview": "function f() {}\n\nfunction main() {\n  for (let i = 0; i < 100_000; i++) {\n    f();\n  }\n}\n"
  },
  {
    "path": "benches/scripts/basic/closure.js",
    "chars": 253,
    "preview": "function outer() {\n  let x = 1;\n  function middle() {\n    let y = 2;\n    function inner() {\n      return x + y;\n    }\n  "
  },
  {
    "path": "benches/scripts/basic/nested-loop.js",
    "chars": 109,
    "preview": "const n = 1_000;\n\nfunction main() {\n  for (let i = 0; i < n; i++) {\n    for (let j = 0; j < n; j++) {}\n  }\n}\n"
  },
  {
    "path": "benches/scripts/closures/create.js",
    "chars": 363,
    "preview": "// Measures closure creation overhead: allocation of function objects\n// and captured variable environments inside a hot"
  },
  {
    "path": "benches/scripts/closures/invoke.js",
    "chars": 708,
    "preview": "// Measures closure invocation overhead: closures are created once,\n// then called repeatedly to isolate dispatch and va"
  },
  {
    "path": "benches/scripts/intl/collator-compare.js",
    "chars": 184,
    "preview": "const kIterationCount = 1000;\nconst collator = new Intl.Collator(\"en\");\n\nfunction main() {\n  for (let i = 0; i < kIterat"
  },
  {
    "path": "benches/scripts/intl/collator-construction.js",
    "chars": 235,
    "preview": "const kIterationCount = 100;\nconst locales = [\"en\", \"de\", \"ja\", \"ar\", \"fr\", \"es\", \"zh\"];\n\nfunction main() {\n  for (let i"
  },
  {
    "path": "benches/scripts/intl/datetimeformat-construction.js",
    "chars": 241,
    "preview": "const kIterationCount = 100;\nconst locales = [\"en\", \"de\", \"ja\", \"ar\", \"fr\", \"es\", \"zh\"];\n\nfunction main() {\n  for (let i"
  },
  {
    "path": "benches/scripts/intl/datetimeformat-format.js",
    "chars": 201,
    "preview": "const kIterationCount = 1000;\nconst dtf = new Intl.DateTimeFormat(\"en\");\nconst date = new Date(2024, 0, 1);\n\nfunction ma"
  },
  {
    "path": "benches/scripts/intl/datetimeformat-with-options.js",
    "chars": 327,
    "preview": "const kIterationCount = 100;\n\nfunction main() {\n  for (let i = 0; i < kIterationCount; i++) {\n    new Intl.DateTimeForma"
  },
  {
    "path": "benches/scripts/intl/datetimeformat_resolved_options.js",
    "chars": 241,
    "preview": "const kIterationCount = 1000;\nconst fmt = new Intl.DateTimeFormat(\"en-US\", {\n  dateStyle: \"full\",\n  timeStyle: \"short\",\n"
  },
  {
    "path": "benches/scripts/intl/listformat-construction.js",
    "chars": 237,
    "preview": "const kIterationCount = 100;\nconst locales = [\"en\", \"de\", \"ja\", \"ar\", \"fr\", \"es\", \"zh\"];\n\nfunction main() {\n  for (let i"
  },
  {
    "path": "benches/scripts/intl/listformat-format.js",
    "chars": 204,
    "preview": "const kIterationCount = 1000;\nconst lf = new Intl.ListFormat(\"en\");\nconst list = [\"apple\", \"banana\", \"cherry\"];\n\nfunctio"
  },
  {
    "path": "benches/scripts/intl/numberformat-construction.js",
    "chars": 239,
    "preview": "const kIterationCount = 100;\nconst locales = [\"en\", \"de\", \"ja\", \"ar\", \"fr\", \"es\", \"zh\"];\n\nfunction main() {\n  for (let i"
  },
  {
    "path": "benches/scripts/intl/numberformat-different-options.js",
    "chars": 289,
    "preview": "const kIterationCount = 100;\n\nfunction main() {\n  for (let i = 0; i < kIterationCount; i++) {\n    new Intl.NumberFormat("
  },
  {
    "path": "benches/scripts/intl/pluralrules-construction.js",
    "chars": 238,
    "preview": "const kIterationCount = 100;\nconst locales = [\"en\", \"de\", \"ja\", \"ar\", \"fr\", \"es\", \"zh\"];\n\nfunction main() {\n  for (let i"
  },
  {
    "path": "benches/scripts/intl/pluralrules-select.js",
    "chars": 158,
    "preview": "const kIterationCount = 1000;\nconst pr = new Intl.PluralRules(\"en\");\n\nfunction main() {\n  for (let i = 0; i < kIteration"
  },
  {
    "path": "benches/scripts/intl/segmenter-construction.js",
    "chars": 236,
    "preview": "const kIterationCount = 100;\nconst locales = [\"en\", \"de\", \"ja\", \"ar\", \"fr\", \"es\", \"zh\"];\n\nfunction main() {\n  for (let i"
  },
  {
    "path": "benches/scripts/intl/segmenter-segment.js",
    "chars": 239,
    "preview": "const kIterationCount = 100;\nconst segmenter = new Intl.Segmenter(\"en\");\nconst text = \"The quick brown fox jumps over th"
  },
  {
    "path": "benches/scripts/properties/access.js",
    "chars": 1453,
    "preview": "// Measures property access performance across varying object shapes:\n// monomorphic (single shape), polymorphic (few sh"
  },
  {
    "path": "benches/scripts/prototypes/chain.js",
    "chars": 1005,
    "preview": "// Measures property resolution through prototype chains of varying\n// depth (1, 5, and 10 levels) to quantify chain-wal"
  },
  {
    "path": "benches/scripts/strings/concat.js",
    "chars": 433,
    "preview": "// Measures repeated string concatenation via the += operator,\n// stressing string allocation and garbage collection thr"
  },
  {
    "path": "benches/scripts/strings/replace.js",
    "chars": 678,
    "preview": "// Measures String.prototype.replace performance: substring search\n// and per-replacement allocation cost on short strin"
  },
  {
    "path": "benches/scripts/strings/slice.js",
    "chars": 256,
    "preview": "// This script should take a few seconds to run.\nconst kIterationCount = 10_000;\nconst base = \"abcdefghijklmnopqrstuvwxy"
  },
  {
    "path": "benches/scripts/strings/split.js",
    "chars": 213,
    "preview": "// This script should take a few seconds to run.\nconst kIterationCount = 10_000;\nconst base = \"abcdefghijklmnopqrstuvwxy"
  },
  {
    "path": "benches/scripts/v8-benches/README.md",
    "chars": 117,
    "preview": "# V8 Benchmarks\n\nThese benchmarks were copied from https://chromium.googlesource.com/v8/v8/+/52ab610bd13/benchmarks/\n"
  },
  {
    "path": "benches/scripts/v8-benches/crypto.js",
    "chars": 60191,
    "preview": "\"use strict\";\n\"use strip\";\n// Copyright 2012 the V8 project authors. All rights reserved.\n// Redistribution and use in s"
  },
  {
    "path": "benches/scripts/v8-benches/deltablue.js",
    "chars": 35671,
    "preview": "\"use strict\";\n\"use strip\";\n// Copyright 2012 the V8 project authors. All rights reserved.\n// Redistribution and use in s"
  },
  {
    "path": "benches/scripts/v8-benches/earley-boyer.js",
    "chars": 188456,
    "preview": "\"use strict\";\n\"use strip\";\n// Copyright 2012 the V8 project authors. All rights reserved.\n// Redistribution and use in s"
  },
  {
    "path": "benches/scripts/v8-benches/navier-stokes.js",
    "chars": 20986,
    "preview": "\"use strict\";\n\"use strip\";\n// Copyright 2012 the V8 project authors. All rights reserved.\n// Redistribution and use in s"
  },
  {
    "path": "benches/scripts/v8-benches/raytrace.js",
    "chars": 34301,
    "preview": "\"use strict\";\n\"use strip\";\n// Copyright 2012 the V8 project authors. All rights reserved.\n// Redistribution and use in s"
  },
  {
    "path": "benches/scripts/v8-benches/regexp.js",
    "chars": 121283,
    "preview": "\"use strict\";\n\"use strip\";\n// Copyright 2012 the V8 project authors. All rights reserved.\n// Redistribution and use in s"
  },
  {
    "path": "benches/scripts/v8-benches/richards.js",
    "chars": 25716,
    "preview": "\"use strict\";\n\"use strip\";\n// Copyright 2012 the V8 project authors. All rights reserved.\n// Redistribution and use in s"
  },
  {
    "path": "benches/scripts/v8-benches/splay.js",
    "chars": 20728,
    "preview": "\"use strict\";\n\"use strip\";\n// Copyright 2012 the V8 project authors. All rights reserved.\n// Redistribution and use in s"
  },
  {
    "path": "benches/src/lib.rs",
    "chars": 37,
    "preview": "#![allow(unused_crate_dependencies)]\n"
  },
  {
    "path": "cli/ABOUT.md",
    "chars": 2254,
    "preview": "# About Boa\n\nBoa is an open-source, experimental ECMAScript Engine written in Rust for\nlexing, parsing and executing ECM"
  },
  {
    "path": "cli/Cargo.toml",
    "chars": 1712,
    "preview": "[package]\nname = \"boa_cli\"\nkeywords = [\"javascript\", \"compiler\", \"js\", \"cli\"]\ncategories = [\"command-line-utilities\"]\nde"
  },
  {
    "path": "cli/README.md",
    "chars": 3458,
    "preview": "# Boa CLI\n\nBoa CLI is `Boa`'s REPL implementation to execute `JavaScript` directly from\nyour CLI.\n\n## Installation\n\n`boa"
  },
  {
    "path": "cli/src/debug/function.rs",
    "chars": 6128,
    "preview": "use boa_engine::{\n    Context, JsArgs, JsNativeError, JsObject, JsResult, JsValue, NativeFunction,\n    builtins::functio"
  },
  {
    "path": "cli/src/debug/gc.rs",
    "chars": 539,
    "preview": "use boa_engine::{\n    Context, JsObject, JsResult, JsValue, NativeFunction, js_string, object::ObjectInitializer,\n};\n\n//"
  },
  {
    "path": "cli/src/debug/limits.rs",
    "chars": 5097,
    "preview": "use boa_engine::{\n    Context, JsArgs, JsNativeError, JsObject, JsResult, JsValue, NativeFunction, js_string,\n    object"
  },
  {
    "path": "cli/src/debug/mod.rs",
    "chars": 2695,
    "preview": "// Allow lint so it, doesn't warn about `JsResult<>` unneeded return on functions.\n#![allow(clippy::unnecessary_wraps)]\n"
  },
  {
    "path": "cli/src/debug/object.rs",
    "chars": 1994,
    "preview": "use boa_engine::{\n    Context, JsNativeError, JsObject, JsResult, JsValue, NativeFunction, js_string,\n    object::{Index"
  },
  {
    "path": "cli/src/debug/optimizer.rs",
    "chars": 2717,
    "preview": "use boa_engine::{\n    Context, JsArgs, JsObject, JsResult, JsValue, NativeFunction, js_string,\n    object::{FunctionObje"
  },
  {
    "path": "cli/src/debug/realm.rs",
    "chars": 561,
    "preview": "use boa_engine::{\n    Context, JsObject, JsResult, JsValue, NativeFunction, js_string, object::ObjectInitializer,\n};\n\n//"
  },
  {
    "path": "cli/src/debug/shape.rs",
    "chars": 2060,
    "preview": "use boa_engine::{\n    Context, JsArgs, JsNativeError, JsObject, JsResult, JsValue, NativeFunction, js_string,\n    object"
  },
  {
    "path": "cli/src/debug/string.rs",
    "chars": 2868,
    "preview": "use boa_engine::{\n    Context, JsNativeError, JsObject, JsResult, JsValue, NativeFunction, js_string,\n    object::Object"
  },
  {
    "path": "cli/src/executor.rs",
    "chars": 5662,
    "preview": "use std::{\n    cell::RefCell,\n    collections::{BTreeMap, VecDeque},\n    mem,\n    rc::Rc,\n};\n\nuse boa_engine::{\n    Cont"
  },
  {
    "path": "cli/src/helper.rs",
    "chars": 6734,
    "preview": "use boa_engine::{ast::scope::Scope, interner::Interner};\nuse boa_parser::Source;\nuse colored::{Color, Colorize};\nuse phf"
  },
  {
    "path": "cli/src/logger.rs",
    "chars": 2050,
    "preview": "use boa_engine::{Context, Finalize, JsResult, Trace};\nuse boa_runtime::{ConsoleState, Logger};\nuse rustyline::ExternalPr"
  },
  {
    "path": "cli/src/main.rs",
    "chars": 25347,
    "preview": "//! A CLI implementation for `boa_engine` that comes complete with file execution and a REPL.\n#![doc = include_str!(\"../"
  },
  {
    "path": "clippy.toml",
    "chars": 895,
    "preview": "doc-valid-idents = ['ECMAScript', 'JavaScript', 'SpiderMonkey', 'GitHub']\nallow-print-in-tests = true\ndisallowed-methods"
  },
  {
    "path": "core/ast/ABOUT.md",
    "chars": 2254,
    "preview": "# About Boa\n\nBoa is an open-source, experimental ECMAScript Engine written in Rust for\nlexing, parsing and executing ECM"
  },
  {
    "path": "core/ast/Cargo.toml",
    "chars": 1028,
    "preview": "[package]\nname = \"boa_ast\"\ndescription = \"Abstract Syntax Tree definition for the Boa JavaScript engine.\"\nkeywords = [\"j"
  },
  {
    "path": "core/ast/src/declaration/export.rs",
    "chars": 11861,
    "preview": "//! Export declaration AST nodes.\n//!\n//! This module contains `export` declaration AST nodes.\n//!\n//! More information:"
  },
  {
    "path": "core/ast/src/declaration/import.rs",
    "chars": 8110,
    "preview": "//! Import declaration AST nodes.\n//!\n//! This module contains `import` declaration AST nodes.\n//!\n//! More information:"
  },
  {
    "path": "core/ast/src/declaration/mod.rs",
    "chars": 6921,
    "preview": "//! The [`Declaration`] Parse Node, as defined by the [spec].\n//!\n//! ECMAScript declarations include:\n//! - [Lexical][l"
  },
  {
    "path": "core/ast/src/declaration/variable.rs",
    "chars": 12953,
    "preview": "//! Variable related declarations.\n\nuse super::Declaration;\nuse crate::{\n    Statement,\n    expression::{Expression, Ide"
  },
  {
    "path": "core/ast/src/expression/access.rs",
    "chars": 12180,
    "preview": "//! Property access expressions, as defined by the [spec].\n//!\n//! [Property access expressions][access] provide two way"
  },
  {
    "path": "core/ast/src/expression/await.rs",
    "chars": 1995,
    "preview": "//! Await expression Expression.\n\nuse core::ops::ControlFlow;\n\nuse super::Expression;\nuse crate::{\n    Span, Spanned,\n  "
  },
  {
    "path": "core/ast/src/expression/call.rs",
    "chars": 9751,
    "preview": "use crate::visitor::{VisitWith, Visitor, VisitorMut};\nuse crate::{Span, Spanned, join_nodes};\nuse boa_interner::{Interne"
  },
  {
    "path": "core/ast/src/expression/identifier.rs",
    "chars": 3350,
    "preview": "//! Local identifier Expression.\n\nuse crate::{\n    Span, Spanned, ToStringEscaped,\n    visitor::{VisitWith, Visitor, Vis"
  },
  {
    "path": "core/ast/src/expression/import_meta.rs",
    "chars": 1459,
    "preview": "//! `import.meta` ECMAScript expression.\n\nuse crate::{\n    Span, Spanned,\n    visitor::{VisitWith, Visitor, VisitorMut},"
  },
  {
    "path": "core/ast/src/expression/literal/array.rs",
    "chars": 8653,
    "preview": "//! Array declaration Expression.\n\nuse crate::expression::Expression;\nuse crate::expression::operator::assign::{AssignOp"
  },
  {
    "path": "core/ast/src/expression/literal/mod.rs",
    "chars": 10549,
    "preview": "//! This module contains all literal expressions, which represents the primitive values in ECMAScript.\n//!\n//! More info"
  },
  {
    "path": "core/ast/src/expression/literal/object.rs",
    "chars": 21501,
    "preview": "//! Object Expression.\n\nuse crate::{\n    LinearPosition, LinearSpan, LinearSpanIgnoreEq, Span, Spanned, block_to_string,"
  },
  {
    "path": "core/ast/src/expression/literal/template.rs",
    "chars": 4643,
    "preview": "//! Template literal Expression.\n\nuse crate::{\n    Span, Spanned,\n    expression::Expression,\n    visitor::{VisitWith, V"
  },
  {
    "path": "core/ast/src/expression/mod.rs",
    "chars": 17281,
    "preview": "//! The [`Expression`] Parse Node, as defined by the [spec].\n//!\n//! ECMAScript expressions include:\n//! - [Primary][pri"
  },
  {
    "path": "core/ast/src/expression/new.rs",
    "chars": 2503,
    "preview": "use crate::expression::Call;\nuse crate::visitor::{VisitWith, Visitor, VisitorMut};\nuse crate::{Span, Spanned};\nuse boa_i"
  },
  {
    "path": "core/ast/src/expression/new_target.rs",
    "chars": 1447,
    "preview": "//! `target.new` ECMAScript expression.\n\nuse crate::{\n    Span, Spanned,\n    visitor::{VisitWith, Visitor, VisitorMut},\n"
  },
  {
    "path": "core/ast/src/expression/operator/assign/mod.rs",
    "chars": 7180,
    "preview": "#![allow(clippy::doc_link_with_quotes)]\n\n//! Assignment expression nodes, as defined by the [spec].\n//!\n//! An [assignme"
  },
  {
    "path": "core/ast/src/expression/operator/assign/op.rs",
    "chars": 9650,
    "preview": "/// An assignment operator assigns a value to its left operand based on the value of its right operand.\n///\n/// The simp"
  },
  {
    "path": "core/ast/src/expression/operator/binary/mod.rs",
    "chars": 5922,
    "preview": "//! Binary expression nodes.\n//!\n//! A Binary expression comprises any operation between two expressions (excluding assi"
  },
  {
    "path": "core/ast/src/expression/operator/binary/op.rs",
    "chars": 20952,
    "preview": "//! This module implements various structure for logic handling.\n\nuse std::fmt::{Display, Formatter, Result};\n\n/// This "
  },
  {
    "path": "core/ast/src/expression/operator/conditional.rs",
    "chars": 3326,
    "preview": "use crate::{\n    Span, Spanned,\n    expression::Expression,\n    visitor::{VisitWith, Visitor, VisitorMut},\n};\nuse boa_in"
  },
  {
    "path": "core/ast/src/expression/operator/mod.rs",
    "chars": 747,
    "preview": "//! Operator expression nodes.\n//!\n//! An [operator][op] expression is an expression that takes an operator (such as `+`"
  },
  {
    "path": "core/ast/src/expression/operator/unary/mod.rs",
    "chars": 2833,
    "preview": "//! Unary expression nodes.\n//!\n//! A unary expression comprises any operation applied to a single expression. Some exam"
  },
  {
    "path": "core/ast/src/expression/operator/unary/op.rs",
    "chars": 6857,
    "preview": "/// A unary operator is one that takes a single operand/argument and performs an operation.\n///\n/// A unary operation is"
  },
  {
    "path": "core/ast/src/expression/operator/update/mod.rs",
    "chars": 4272,
    "preview": "//! Update expression nodes.\n//!\n//! A update expression increments or decrements it's operand and returns a value\n//!\n/"
  },
  {
    "path": "core/ast/src/expression/operator/update/op.rs",
    "chars": 3178,
    "preview": "/// A update operator is one that takes a single operand/argument and performs an operation.\n///\n/// More information:\n/"
  },
  {
    "path": "core/ast/src/expression/optional.rs",
    "chars": 8343,
    "preview": "use super::{Expression, access::PropertyAccessField};\nuse crate::{\n    Span, Spanned,\n    function::PrivateName,\n    joi"
  },
  {
    "path": "core/ast/src/expression/parenthesized.rs",
    "chars": 1999,
    "preview": "use super::Expression;\nuse crate::{\n    Span, Spanned,\n    visitor::{VisitWith, Visitor, VisitorMut},\n};\nuse boa_interne"
  },
  {
    "path": "core/ast/src/expression/regexp.rs",
    "chars": 2705,
    "preview": "//! This module contains the ECMAScript representation regular expressions.\n//!\n//! More information:\n//!  - [ECMAScript"
  },
  {
    "path": "core/ast/src/expression/spread.rs",
    "chars": 2321,
    "preview": "use boa_interner::{Interner, ToInternedString};\nuse core::ops::ControlFlow;\n\nuse crate::{\n    Span, Spanned,\n    visitor"
  },
  {
    "path": "core/ast/src/expression/tagged_template.rs",
    "chars": 4130,
    "preview": "use super::Expression;\nuse crate::{\n    Span, Spanned,\n    visitor::{VisitWith, Visitor, VisitorMut},\n};\nuse boa_interne"
  },
  {
    "path": "core/ast/src/expression/this.rs",
    "chars": 1381,
    "preview": "//! `this` ECMAScript expression.\n\nuse crate::{\n    Span, Spanned,\n    visitor::{VisitWith, Visitor, VisitorMut},\n};\nuse"
  },
  {
    "path": "core/ast/src/expression/yield.rs",
    "chars": 2603,
    "preview": "use boa_interner::{Interner, ToInternedString};\nuse core::ops::ControlFlow;\n\nuse crate::{\n    Span, Spanned,\n    visitor"
  },
  {
    "path": "core/ast/src/function/arrow_function.rs",
    "chars": 4857,
    "preview": "use super::{FormalParameterList, FunctionBody};\nuse crate::operations::{ContainsSymbol, contains};\nuse crate::scope::Fun"
  },
  {
    "path": "core/ast/src/function/async_arrow_function.rs",
    "chars": 4958,
    "preview": "use super::{FormalParameterList, FunctionBody};\nuse crate::operations::{ContainsSymbol, contains};\nuse crate::scope::Fun"
  },
  {
    "path": "core/ast/src/function/async_function.rs",
    "chars": 9231,
    "preview": "//! Async Function Expression.\n\nuse super::{FormalParameterList, FunctionBody};\nuse crate::{\n    Declaration, LinearSpan"
  },
  {
    "path": "core/ast/src/function/async_generator.rs",
    "chars": 9106,
    "preview": "//! Async Generator Expression\n\nuse super::{FormalParameterList, FunctionBody};\nuse crate::operations::{ContainsSymbol, "
  },
  {
    "path": "core/ast/src/function/class.rs",
    "chars": 28250,
    "preview": "use super::{FormalParameterList, FunctionBody, FunctionExpression};\nuse crate::{\n    Declaration, LinearPosition, Linear"
  },
  {
    "path": "core/ast/src/function/generator.rs",
    "chars": 8836,
    "preview": "use super::{FormalParameterList, FunctionBody};\nuse crate::{\n    Declaration, LinearSpan, LinearSpanIgnoreEq, Span, Span"
  },
  {
    "path": "core/ast/src/function/mod.rs",
    "chars": 4083,
    "preview": "//! This module contains Function and Class AST nodes.\n//!\n//! ECMAScript defines multiple types of functions and classe"
  },
  {
    "path": "core/ast/src/function/ordinary_function.rs",
    "chars": 10018,
    "preview": "use super::{FormalParameterList, FunctionBody};\nuse crate::{\n    Declaration, LinearSpan, LinearSpanIgnoreEq, Span, Span"
  },
  {
    "path": "core/ast/src/function/parameters.rs",
    "chars": 8683,
    "preview": "use crate::{\n    declaration::{Binding, Variable},\n    expression::Expression,\n    operations::bound_names,\n    visitor:"
  },
  {
    "path": "core/ast/src/keyword/mod.rs",
    "chars": 23014,
    "preview": "//! The `Keyword` AST node, which represents reserved words of the ECMAScript language.\n//!\n//! The [specification][spec"
  },
  {
    "path": "core/ast/src/keyword/tests.rs",
    "chars": 11364,
    "preview": "#![allow(clippy::cognitive_complexity)]\n\nuse super::*;\n\n/// Gets a list of all the keywords.\nfn all_keywords() -> impl I"
  },
  {
    "path": "core/ast/src/lib.rs",
    "chars": 4256,
    "preview": "//! Boa's **`boa_ast`** crate implements an ECMAScript abstract syntax tree.\n//!\n//! # Crate Overview\n//! **`boa_ast`** "
  },
  {
    "path": "core/ast/src/module_item_list/mod.rs",
    "chars": 18580,
    "preview": "//! Module item list AST nodes.\n//!\n//! More information:\n//!  - [ECMAScript specification][spec]\n//!\n//! [spec]: https:"
  },
  {
    "path": "core/ast/src/operations/mod.rs",
    "chars": 91131,
    "preview": "//! Definitions of various **Syntax-Directed Operations** used in the [spec].\n//!\n//! [spec]: https://tc39.es/ecma262/#s"
  },
  {
    "path": "core/ast/src/operations/tests.rs",
    "chars": 1766,
    "preview": "use boa_interner::Interner;\n\nuse crate::{\n    Position, Span, Statement,\n    expression::{Call, Identifier, NewTarget, T"
  },
  {
    "path": "core/ast/src/pattern.rs",
    "chars": 28914,
    "preview": "//! A pattern binding or assignment node.\n//!\n//! A [`Pattern`] Corresponds to the [`BindingPattern`][spec1] and the [`A"
  },
  {
    "path": "core/ast/src/position.rs",
    "chars": 20480,
    "preview": "use std::{\n    cmp::Ordering,\n    fmt::{self, Debug},\n    num::NonZeroU32,\n};\n\n/// A position in the ECMAScript source c"
  },
  {
    "path": "core/ast/src/property.rs",
    "chars": 3897,
    "preview": "//! Property definition related types, used in object literals and class definitions.\n\nuse super::{Expression, Spanned};"
  },
  {
    "path": "core/ast/src/punctuator/mod.rs",
    "chars": 8443,
    "preview": "//! The `Punctuator` enum, which contains all punctuators used in ECMAScript.\n//!\n//! More information:\n//!  - [ECMAScri"
  },
  {
    "path": "core/ast/src/punctuator/tests.rs",
    "chars": 11972,
    "preview": "#![allow(clippy::cognitive_complexity)]\n\nuse super::*;\n\n/// Gets an iterator over all the existing punctuators.\nfn all_p"
  },
  {
    "path": "core/ast/src/scope.rs",
    "chars": 25533,
    "preview": "//! This module implements the binding scope for various AST nodes.\n//!\n//! Scopes are used to track the bindings of ide"
  },
  {
    "path": "core/ast/src/scope_analyzer.rs",
    "chars": 97055,
    "preview": "//! This module implements the scope analysis for the AST.\n//!\n//! The scope analysis is done in two steps:\n//! 1. Colle"
  },
  {
    "path": "core/ast/src/source.rs",
    "chars": 5774,
    "preview": "use std::ops::ControlFlow;\n\nuse boa_interner::{Interner, Sym, ToIndentedString};\n\nuse crate::{\n    ModuleItemList, State"
  },
  {
    "path": "core/ast/src/source_text.rs",
    "chars": 1967,
    "preview": "use crate::{LinearPosition, LinearSpan};\n\n/// Source text.\n#[cfg_attr(feature = \"serde\", derive(serde::Serialize, serde:"
  },
  {
    "path": "core/ast/src/statement/block.rs",
    "chars": 2948,
    "preview": "//! Block AST node.\n\nuse crate::{\n    Statement, StatementList,\n    operations::{ContainsSymbol, contains},\n    scope::S"
  },
  {
    "path": "core/ast/src/statement/if.rs",
    "chars": 3698,
    "preview": "//! If statement\n\nuse crate::{\n    expression::Expression,\n    statement::Statement,\n    visitor::{VisitWith, Visitor, V"
  },
  {
    "path": "core/ast/src/statement/iteration/break.rs",
    "chars": 2354,
    "preview": "use boa_interner::{Interner, Sym, ToInternedString};\nuse core::ops::ControlFlow;\n\nuse crate::Statement;\nuse crate::visit"
  },
  {
    "path": "core/ast/src/statement/iteration/continue.rs",
    "chars": 2377,
    "preview": "use crate::statement::Statement;\nuse crate::visitor::{VisitWith, Visitor, VisitorMut};\nuse boa_interner::{Interner, Sym,"
  },
  {
    "path": "core/ast/src/statement/iteration/do_while_loop.rs",
    "chars": 2482,
    "preview": "use crate::{\n    expression::Expression,\n    statement::Statement,\n    visitor::{VisitWith, Visitor, VisitorMut},\n};\nuse"
  },
  {
    "path": "core/ast/src/statement/iteration/for_in_loop.rs",
    "chars": 3961,
    "preview": "use crate::operations::{ContainsSymbol, contains};\nuse crate::scope::Scope;\nuse crate::visitor::{VisitWith, Visitor, Vis"
  },
  {
    "path": "core/ast/src/statement/iteration/for_loop.rs",
    "chars": 9575,
    "preview": "use crate::operations::{ContainsSymbol, contains};\nuse crate::scope::Scope;\nuse crate::visitor::{VisitWith, Visitor, Vis"
  },
  {
    "path": "core/ast/src/statement/iteration/for_of_loop.rs",
    "chars": 4541,
    "preview": "use crate::operations::{ContainsSymbol, contains};\nuse crate::scope::Scope;\nuse crate::visitor::{VisitWith, Visitor, Vis"
  },
  {
    "path": "core/ast/src/statement/iteration/mod.rs",
    "chars": 3293,
    "preview": "//! Iteration nodes\n\nmod r#break;\nmod r#continue;\nmod do_while_loop;\nmod for_in_loop;\nmod for_loop;\nmod for_of_loop;\nmod"
  },
  {
    "path": "core/ast/src/statement/iteration/while_loop.rs",
    "chars": 2431,
    "preview": "use crate::{\n    expression::Expression,\n    statement::Statement,\n    visitor::{VisitWith, Visitor, VisitorMut},\n};\nuse"
  },
  {
    "path": "core/ast/src/statement/labelled.rs",
    "chars": 4637,
    "preview": "use crate::{\n    Statement,\n    function::FunctionDeclaration,\n    visitor::{VisitWith, Visitor, VisitorMut},\n};\nuse boa"
  },
  {
    "path": "core/ast/src/statement/mod.rs",
    "chars": 9324,
    "preview": "//! The [`Statement`] Parse Node, as defined by the [spec].\n//!\n//! ECMAScript [statements] are mainly composed of contr"
  },
  {
    "path": "core/ast/src/statement/return.rs",
    "chars": 2459,
    "preview": "use crate::{\n    expression::Expression,\n    statement::Statement,\n    visitor::{VisitWith, Visitor, VisitorMut},\n};\nuse"
  },
  {
    "path": "core/ast/src/statement/switch.rs",
    "chars": 6945,
    "preview": "//! Switch node.\n\nuse crate::{\n    StatementList,\n    expression::Expression,\n    operations::{ContainsSymbol, contains}"
  },
  {
    "path": "core/ast/src/statement/throw.rs",
    "chars": 1981,
    "preview": "use crate::{\n    Expression,\n    statement::Statement,\n    visitor::{VisitWith, Visitor, VisitorMut},\n};\nuse boa_interne"
  },
  {
    "path": "core/ast/src/statement/try.rs",
    "chars": 7787,
    "preview": "//! Error handling statements\n\nuse crate::operations::{ContainsSymbol, contains};\nuse crate::scope::Scope;\nuse crate::vi"
  },
  {
    "path": "core/ast/src/statement/with.rs",
    "chars": 2549,
    "preview": "use crate::{\n    expression::Expression,\n    scope::Scope,\n    statement::Statement,\n    visitor::{VisitWith, Visitor, V"
  },
  {
    "path": "core/ast/src/statement_list.rs",
    "chars": 6226,
    "preview": "//! Statement list node.\n\nuse super::Declaration;\nuse crate::{\n    LinearPosition,\n    statement::Statement,\n    visitor"
  },
  {
    "path": "core/ast/src/visitor.rs",
    "chars": 35307,
    "preview": "//! ECMAScript Abstract Syntax Tree visitors.\n//!\n//! This module contains visitors which can be used to inspect or modi"
  },
  {
    "path": "core/ast/tests/scope.rs",
    "chars": 10702,
    "preview": "//! Tests for the scope analysis of the AST.\n\n#![allow(unused_crate_dependencies)]\n\nuse boa_ast::{\n    Declaration, Expr"
  },
  {
    "path": "core/engine/ABOUT.md",
    "chars": 2254,
    "preview": "# About Boa\n\nBoa is an open-source, experimental ECMAScript Engine written in Rust for\nlexing, parsing and executing ECM"
  },
  {
    "path": "core/engine/Cargo.toml",
    "chars": 7062,
    "preview": "[package]\nname = \"boa_engine\"\nkeywords = [\"javascript\", \"js\", \"compiler\", \"lexer\", \"parser\"]\ncategories = [\"parser-imple"
  },
  {
    "path": "core/engine/benches/README.md",
    "chars": 431,
    "preview": "# Boa Benchmarks\n\nFor each js script in the `bench_scripts` folder, we create three benchmarks:\n\n- Parser => lexing and "
  },
  {
    "path": "core/engine/benches/bench_scripts/arithmetic_operations.js",
    "chars": 54,
    "preview": "((2 + 2) ** 3 / 100 - 5 ** 3 * -1000) ** 2 + 100 - 8;\n"
  },
  {
    "path": "core/engine/benches/bench_scripts/array_access.js",
    "chars": 94,
    "preview": "(function () {\n  let testArr = [1, 2, 3, 4, 5];\n\n  let res = testArr[2];\n\n  return res;\n})();\n"
  },
  {
    "path": "core/engine/benches/bench_scripts/array_create.js",
    "chars": 125,
    "preview": "(function () {\n  let testArr = [];\n  for (let a = 0; a <= 500; a++) {\n    testArr[a] = \"p\" + a;\n  }\n\n  return testArr;\n}"
  },
  {
    "path": "core/engine/benches/bench_scripts/array_pop.js",
    "chars": 1048,
    "preview": "(function () {\n  let testArray = [\n    83, 93, 27, 29, 2828, 234, 23, 56, 32, 56, 67, 77, 32, 45, 93, 17, 28, 83,\n    62"
  },
  {
    "path": "core/engine/benches/bench_scripts/boolean_object_access.js",
    "chars": 159,
    "preview": "new Boolean(\n  !new Boolean(\n    new Boolean(\n      !new Boolean(false).valueOf() && new Boolean(true).valueOf(),\n    )."
  },
  {
    "path": "core/engine/benches/bench_scripts/clean_js.js",
    "chars": 250,
    "preview": "!function () {\n\tvar M = new Array();\n\tfor (i = 0; i < 100; i++) {\n\t\tM.push(Math.floor(Math.random() * 100));\n\t}\n\tvar tes"
  },
  {
    "path": "core/engine/benches/bench_scripts/fibonacci.js",
    "chars": 144,
    "preview": "(function () {\n  let num = 12;\n\n  function fib(n) {\n    if (n <= 1) return 1;\n    return fib(n - 1) + fib(n - 2);\n  }\n\n "
  },
  {
    "path": "core/engine/benches/bench_scripts/for_loop.js",
    "chars": 139,
    "preview": "(function () {\n  let b = \"hello\";\n  for (let a = 10; a < 100; a += 5) {\n    if (a < 50) {\n      b += \"world\";\n    }\n  }\n"
  },
  {
    "path": "core/engine/benches/bench_scripts/mini_js.js",
    "chars": 157,
    "preview": "!function(){var r=new Array();for(i=0;i<100;i++)r.push(Math.floor(100*Math.random()));var a=[];for(i=0;i<100;i++)r[i]>50"
  },
  {
    "path": "core/engine/benches/bench_scripts/number_object_access.js",
    "chars": 116,
    "preview": "new Number(\n  new Number(\n    new Number(new Number(100).valueOf() - 10.5).valueOf() + 100,\n  ).valueOf() * 1.6,\n);\n"
  },
  {
    "path": "core/engine/benches/bench_scripts/object_creation.js",
    "chars": 96,
    "preview": "(function () {\n  let test = {\n    my_prop: \"hello\",\n    another: 65,\n  };\n\n  return test;\n})();\n"
  },
  {
    "path": "core/engine/benches/bench_scripts/object_prop_access_const.js",
    "chars": 104,
    "preview": "(function () {\n  let test = {\n    my_prop: \"hello\",\n    another: 65,\n  };\n\n  return test.my_prop;\n})();\n"
  },
  {
    "path": "core/engine/benches/bench_scripts/object_prop_access_dyn.js",
    "chars": 112,
    "preview": "(function () {\n  let test = {\n    my_prop: \"hello\",\n    another: 65,\n  };\n\n  return test[\"my\" + \"_prop\"];\n})();\n"
  },
  {
    "path": "core/engine/benches/bench_scripts/regexp.js",
    "chars": 100,
    "preview": "(function () {\n  let regExp = new RegExp(\"hello\", \"i\");\n\n  return regExp.test(\"Hello World\");\n})();\n"
  },
  {
    "path": "core/engine/benches/bench_scripts/regexp_creation.js",
    "chars": 80,
    "preview": "(function () {\n  let regExp = new RegExp(\"hello\", \"i\");\n\n  return regExp;\n})();\n"
  },
  {
    "path": "core/engine/benches/bench_scripts/regexp_literal.js",
    "chars": 84,
    "preview": "(function () {\n  let regExp = /hello/i;\n\n  return regExp.test(\"Hello World\");\n})();\n"
  },
  {
    "path": "core/engine/benches/bench_scripts/regexp_literal_creation.js",
    "chars": 64,
    "preview": "(function () {\n  let regExp = /hello/i;\n\n  return regExp;\n})();\n"
  },
  {
    "path": "core/engine/benches/bench_scripts/string_code_point_sum.js",
    "chars": 173,
    "preview": "(() => {\n  let sum = \"\";\n  let string = \"Hello, world!!!\";\n  for (let i = 0; i < string.length; ++i) {\n    sum += string"
  },
  {
    "path": "core/engine/benches/bench_scripts/string_compare.js",
    "chars": 110,
    "preview": "(function () {\n  var a = \"hello\";\n  var b = \"world\";\n\n  var c = a == b;\n\n  var d = b;\n  var e = d == b;\n})();\n"
  },
  {
    "path": "core/engine/benches/bench_scripts/string_concat.js",
    "chars": 77,
    "preview": "(function () {\n  var a = \"hello\";\n  var b = \"world\";\n\n  var c = a + b;\n})();\n"
  },
  {
    "path": "core/engine/benches/bench_scripts/string_copy.js",
    "chars": 53,
    "preview": "(function () {\n  var a = \"hello\";\n  var b = a;\n})();\n"
  }
]

// ... and 761 more files (download for full content)

About this extraction

This page contains the full source code of the boa-dev/boa GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 961 files (8.9 MB), approximately 2.4M tokens, and a symbol index with 12098 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!