- Refactor `String` => `Rc<str>`
- Refactor `Symbol` => `Rc<Symbol>`
- Refactor `BigInt` => `RcBigInt`
- Changed function signature, from `&mut Value` to `&Value`
- Removed `Interpreter::value_to_rust_number()
- Abstracted `Gc<GcCell<Object>>` to `GcObject`
- Removed unnecessary `Box`s in global environment
- Extracted `extensible` from internal slots
- Made `to_primitive` throw errors
- Removed `strict` parameter in `SameValue` function.
- The `SameValue` function is not dependent on strict mode.
- Maded arrow functions non-constructable
- Simplified Function object and removed FunctionKind
- Rnamed create_ordinary -> ordinary, create_builtin -> builtin
- Added name and length properties in global objects
* implement this
* remove construct/call from Object instead set func
* get_this_binding() was wrong, fixed
* BindingStatus is now properly set
* `this` now works on dynamic functions
* Migrates all builtins to use a single constructor/call fucntion to match the spec
* Ensure new object has an existing prototype
* create_function utility
* needing to clone before passing through
* feat: Implement Array.prototype.toString
* fix: fix the missing arguments for Array.prototype.toString's inner join
* refactor: use fmt to beautify the code
* refactor: Array.prototype.toString——smplify error formating
* fix: Array.prototype.toString should be called by ES value
* fix: fix the error message
* refactor: Array.prototype.toString remove the duplicated logic
* Added the initial re-implementation of Display for Objects
* Added internal object slots printing
* Used INSTANCE_PROTOTYPE instead of "__proto__"
* Updated TODO comment
* rustfmt
* Fixed clippy and unit tests
* WIP: Added a working prototype for detecting cycles
* Refactored the object printing logic
* Reverted test.js
* Fixed print identation
* rustfmt
* Added printing for the internal_slots
* Fixed missing comma between internal slots & props when printing
* Clippy
* Implemented a macro for printing objects & refactored
* Used display_obj in console.log
* rustfmt
* Fixed String & Array prototypes length not being set
* Extracted common logic in a function
* Commented out problematic lines in `concat`
* rustfmt
* Refactored console.rs & value.rs
* Fixed log_string_from looking for wrong string slot
* Reverted commented test
* Removed Array & String prototype lengths' getters
* Removed unused functions
* rustfmt
* Add make_fn macro in builtins module
* Replace all array methods with the make_fn macro
* Set builtins method with make_fn for bool, console, error, json, math, number, object, regexp and string
* Rename make_fn macro to make_builtin_fn
* Rename the actual macro rule to make_builtin_fn
* make_builtin_fn macro without length will result to length 0
* Add length property for every builtin method
* Remove duplicate definition of toString method in regexp
* Add missing length attributes to builtins methods
* Added the initial implementation for Array.prototype.map
* Removed unneccessary .to_string()
* Fixed clippy errors
* Fixed old array being modified by `map`
* rustfmt
* Refactored `map` to use iter().map()
* Refactored array.prototype.map
* Array.prototype.fill method implementation
* Added types
* Fmt changes
* Fill tests fixed - let to var change
* Added support for string arguments
* Formatting
* Replaced set_field_slice with set_field
* Parse args to int change
* More tests and bug fixes
* Removed print
* Removed unnecessary else block
* Calling function to get ValueData::Undefined in GC
* Fmt update
* Function length prop, variable name change, and one more test
* Removed duplicated test case