Crate boa_interner

Crate boa_interner 

Source
Expand description

Boa’s boa_interner is a string interner for compiler performance.

§Crate Overview

The idea behind using a string interner is that in most of the code, strings such as identifiers and literals are often repeated. This causes extra burden when comparing them and storing them. A string interner stores a unique usize symbol for each string, making sure that there are no duplicates. This makes it much easier to compare, since it’s just comparing to usize, and also it’s easier to store, since instead of a heap-allocated string, you only need to store a usize. This reduces memory consumption and improves performance in the compiler.

§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. More information can be viewed at Boa’s website.

Try out the most recent release with Boa’s live demo playground.

§Boa Crates

  • boa_cli - Boa’s CLI && REPL implementation
  • boa_ast - Boa’s ECMAScript Abstract Syntax Tree.
  • boa_engine - Boa’s implementation of ECMAScript builtin objects and execution.
  • boa_gc - Boa’s garbage collector.
  • boa_icu_provider - Boa’s ICU4X data provider.
  • boa_interner - Boa’s string interner.
  • boa_macros - Boa’s macros.
  • boa_parser - Boa’s lexer and parser.
  • boa_runtime - Boa’s WebAPI features.
  • boa_string - Boa’s ECMAScript string implementation.
  • tag_ptr - Utility library that enables a pointer to be associated with a tag of type usize.
  • small_btree - Utility library that adds the SmallBTreeMap data structure.

Structs§

Interner
The string interner for Boa.
JSInternedStrRef
A double reference to an interned string inside Interner.
Sym
The string symbol type for Boa.

Enums§

JStrRef
An enumeration of all slice types Interner can internally store.

Traits§

ToIndentedString
Implements the display formatting with indentation.
ToInternedString
Converts a given element to a string using an interner.