- Add
continue
keyword - Add
as
:import "..." for Name as OtherName
- Add Support positive sign in scientific notation
- Add Fiber.try(value) to complement Fiber.call(value)
- Allow
.
to be on a different line (for fluent/builder APIs)
- Random: Random.sample optimizations
- List:
- add
list.sort()
andlist.sort {|a, b| ... }
(quicksort) - add
list.swap(index0, index1)
for swapping elements within a list - add
list.indexOf(value)
for finding values in a list
- add
- Num:
- add
Num.tau
- add
Num.nan
- add
Num.infinity
- add
min(other)
- add
max(other)
- add
clamp(min, max)
- add
exp
- add
log2
- add
- Fix stack corruption related to
Fn
calls - Fix a byte offset bug in CODE_IMPORT_VARIABLE
- Fix some stack corruptions related to multiple wrenInterpret calls
- Fixed crash when GC collects module during import
- Fix
Bool
,Num
andNull
allowing subclassing, which is invalid
- BREAKING: Add
userData
towrenReallocateFn
- BREAKING: Add
WrenLoadModuleResult
which has aonComplete
callback, allowing freeing module strings - Add
wrenHasVariable
andwrenHasModule
queries, for use withwrenGetVariable
- Add
wrenSetListElement
to complementwrenGetListElement
, and allow negative index for both - Add Map functions to API
- wrenSetSlotNewMap
- wrenGetMapCount
- wrenGetMapContainsKey
- wrenGetMapValue
- wrenSetMapValue
- wrenRemoveMapValue
- build; add util/generate_docs.py for regenerating project files
- vm; Allow computed goto when using clang on Windows
- vm; WREN_MAX_TEMP_ROOTS default is 8 (instead of 5)
- vm; GC debug times are printed in milliseconds, not seconds
0.3.0 is a fairly specific release, aimed at fixing build issues across platforms, streamlining the process for new users and making embedding easier. This is a stepping stone for working on language features and improving the VM, hacking on the docs and the VM is simpler than ever!
Builds now work out of the box on all primary platforms. Previously there was issues on Windows and other platforms due to unix-ey workflows being the default.
All the python scripts have also been fixed and updated (to python 3), and work consistently across all platforms out of the box too (including the tests, benchmarks, metrics etc). Like before, there was some things that didn't hold up on Windows or Mac. Fixed!
A lot of work has been done to also clarify the distinction between the CLI project and the VM, as well as move the CLI to its own repo! This removes a lot of code that wasn't being used, and also been clarified the project structure.
Docs have also had a clean up, and a new page to try Wren directly on the doc page was added.
- CLI moved to own repo
- Use premake for project generation, see projects/
- Fix builds across platforms. "Just works" on all primary platforms.
- Fix amalgamated script generator and amalgamated build
- Fix unicode parsing and other issues in all python scripts
- All python scripts are python3 now, and run on all platforms correctly
- Test runner isolated and unified for VM tests
- Remove SASS and Pygments requirements from docs, just python now
- Updated docs to clarify VM/CLI split
- Added Try page for running wren code in the docs
0.2.0 spans a pretty wide time period with around 290 commits. This includes many bug fixes, improvements, clarity in the code and documentation and so on. There's too many to explicitly list. Below is the obvious user facing stuff that was easy to spot in the history.
Most noteworthy is that 'relative imports' are a slightly breaking change, but help pave the way forward toward a consistency for modules.
import
was made smarter, differentiating relative from logicalFiber
can now accept a value from the firstcall
/transfer
- Added
String.trim
,String.trimEnd
,String.trimStart
variants - Added
String.split
,String.replace
,String.fromByte
- Added
String.indexOf(needle, startIndex)
- Added
Sequence.take
andSequence.skip
- Added
List.filled(count, value)
- Added
Num.pow
,Num.log
,Num.round
- Added
Num.largest
,Num.smallest
- Added
Map
iteration (MapEntry
)
- Added
wren.hpp
for use in c++ - Added void* user data to
WrenVM
- Allow hosts with no module loader to still load optional modules.
- Added
wrenAbortFiber
Please note that beyond 0.2.0 the CLI will have it's own changelog. This list is not exhaustive. For a fuller history see the commit log above.
- Add path module
- Add
--version
- Add REPL written in Wren
- Add Stdin.isTerminal
- Added Platform class
- Rename
process
module toos
First declared version. Everything is new!