When parsing hex numeric literals, the return value of strtoll (__int64) is
implicitly converted to double via the NUM_VAL macro. This adds an explicit
cast to double to silence the MSVC warning C4244 about potential loss of data
from a 64-bit integer to a double.
The floating-point remainder operator % now explicitly documents that the
returned value retains the sign of the dividend (this), matching the
behavior of C's fmod function. This addresses issue #695 by removing
ambiguity about sign handling in the modulus documentation.
The documentation for class encapsulation is updated to remove the comparison to C++ and Java from the initial description, add bold formatting to key getter/setter explanations, and include a new code example demonstrating that fields are private to instances and inaccessible from subclasses or other instances of the same class.
Add runtime error check after foreign object allocation in the interpreter loop to properly propagate fiber aborts triggered inside foreign class allocators. Previously, calling wrenAbortFiber from an allocate callback would set the fiber error state but the interpreter would continue execution, ignoring the abort. The fix adds a wrenHasError check after createForeign call, jumping to the runtime error handler if an error was raised.
Also adds a test case with a BadClass foreign class whose allocator calls wrenAbortFiber, verifying the fiber correctly catches and returns the error message "Something went wrong".
- Remove i386 from ARCHS in build_libuv.py to stop building 32-bit universal binary
- Drop ci_32 from CI_ARCHS in .travis.yml to skip 32-bit CI runs
- Add XCBuildData cache directory to .gitignore for macOS Xcode build artifacts
Correct "in a local projects" to "in local projects", add missing comma after "2.5+ years", and adjust parenthetical phrasing for clarity in the second paragraph of the Wren introduction blog.
The markdown.markdown() call was passing extensions as a positional argument,
which is deprecated in newer versions of the Python-Markdown library. This
change wraps the extensions list in the explicit 'extensions' keyword argument
to ensure compatibility with the current API and suppress deprecation warnings
during documentation generation.
The link target for "runtime error" reference was pointing to a flat file path
`error-handling.html` which would fail when the page is served from a subdirectory.
Changed to `../error-handling.html` to properly resolve relative to the current
`embedding/` directory path.
Replace all outdated reference links in README.md that pointed to the deprecated
munificent.github.io/wren domain with their current equivalents on wren.io,
covering syntax, performance, classes, concurrency, embedding, getting-started,
and contributing pages.
Implement the `log` method on Num by adding a DEF_NUM_FN(log, log) macro invocation in wren_core.c, registering the corresponding primitive `num_log` on the numClass, and creating a new test file test/core/number/log.wren that validates positive and negative input behavior.
Implement the `num_pow` primitive that wraps C's `pow()` function, enabling
exponentiation on Num instances via the `pow(_)` method. Register the new
primitive in `wrenInitializeCore` and add a test file verifying basic cases:
2^4=16, 2^10=1024, and 1^0=1.
Add a new primitive `string_indexOf_with_startIndex` that accepts a second integer argument to specify the starting position for the search. Modify the existing `wrenStringFind` function to accept a `startIndex` parameter, updating its Boyer-Moore-Horspool algorithm to begin scanning from the given offset. Update the `string_contains` primitive to pass `0` as the start index. Register the new overloaded method as `indexOf(_,_)` on the string class and add test cases covering boundary conditions and out-of-range start indices.
The previous link pointed to a non-existent ../range.html page. The corrected link now points to the proper anchor #ranges within the values documentation page, ensuring readers can access the friendly introduction as intended.