Skip to content

Conversation

@xeioex
Copy link
Contributor

@xeioex xeioex commented Nov 11, 2025

  • Number.prototype.toString(radix) Improved accuracy for edge cases Reimplemented using njs_dtoa2() with JS_DTOA_FORMAT_FREE | JS_DTOA_EXP_DISABLED
  • Number.prototype.toFixed(frac) Reimplemented using njs_dtoa2() with JS_DTOA_FORMAT_FIXED Removed old njs_fixed_dtoa() implementation
  • Number.prototype.toPrecision(prec) Reimplemented using njs_dtoa2() with precision format Removed old njs_dtoa_precision() implementation
  • Number.prototype.toExponential(frac) Reimplemented using njs_dtoa2() with exponential format Removed old njs_dtoa_exponential() implementation
  • parseInt() Simplified parsing implementation Removed custom njs_number_radix_parse() helper
  • parseFloat() Simplified parsing implementation

Removed custom njs_number_bin_parse(), njs_number_oct_parse(), njs_number_dec_parse() and njs_strtod.c module Better handling of large numbers and denormal floats and invalid inputs.

+4 test262 tests passed.

@VadimZhestikov
Copy link
Contributor

VadimZhestikov commented Nov 12, 2025

What about njs_dtoa.c supportability? We have no build time sync with changes in original quickjs/dtoa.c.

Copy link
Contributor

@VadimZhestikov VadimZhestikov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good except for mentioned concerns

@xeioex

This comment was marked as outdated.

This helps when some code requires a string value to be zero-terminated
to avoid copying and adding \0 byte.

It adds small overhead (less than 3% in worst case of an empty string
value) to existing sizeof(njs_value_t) + sizeof(njs_string_t) = 32.
- Number.prototype.toString(radix)
    Improved accuracy for edge cases
    Reimplemented using njs_dtoa2() with JS_DTOA_FORMAT_FREE | JS_DTOA_EXP_DISABLED
- Number.prototype.toFixed(frac)
    Reimplemented using njs_dtoa2() with JS_DTOA_FORMAT_FIXED
    Removed old njs_fixed_dtoa() implementation
- Number.prototype.toPrecision(prec)
    Reimplemented using njs_dtoa2() with precision format
    Removed old njs_dtoa_precision() implementation
- Number.prototype.toExponential(frac)
    Reimplemented using njs_dtoa2() with exponential format
    Removed old njs_dtoa_exponential() implementation
- parseInt()
    Simplified parsing implementation
    Removed custom njs_number_radix_parse() helper
- parseFloat()
    Simplified parsing implementation

Removed custom njs_number_bin_parse(), njs_number_oct_parse(),
njs_number_dec_parse() and njs_strtod.c module Better handling of large
numbers and denormal floats and invalid inputs.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants