The Wren Programming Language. Wren is a small, fast, class-based concurrent scripting language.
0.4.0 contains 145 commits from 28 contributors!
Release blog post (highlights only).
This release includes many documentation revisions, fixes, additions and gaps closed!
continue
keyword for loops - https://github.com/wren-lang/wren/pull/822
as
keyword: import "..." for Name as OtherName
- https://github.com/wren-lang/wren/pull/775
.
to be on a different line (for fluent/builder APIs) - https://github.com/wren-lang/wren/commit/4c496c56a6bc51c5922a5ed19b6e0ec9b1b00de6
"""
- https://github.com/wren-lang/wren/commit/981ea4adf1f9631dca386675f87cf88a76cc79ce
\e
escape character for strings - https://github.com/wren-lang/wren/pull/963
list.sort()
and list.sort {|a, b| ... }
(quicksort) - https://github.com/wren-lang/wren/pull/802
list.swap(index0, index1)
for swapping elements within a list - https://github.com/wren-lang/wren/commit/38f50fe091159ff8b114b9cbd0054456f7ed5366
list.indexOf(value)
for finding values in a list - https://github.com/wren-lang/wren/commit/62009870a8031acf231e5fb5eba13e4f6d334a07
list.remove(value)
, removing by value not index - https://github.com/wren-lang/wren/commit/ecce1f6be9fb2a177e1c61577d5f1fd16e36cc80
Num.tau
- https://github.com/wren-lang/wren/commit/89c5e224809effae59dfe3cb0e2425b23d1722f1
Num.nan
, Num.infinity
- https://github.com/wren-lang/wren/pull/781
Num.minSafeInteger
and Num.maxSafeInteger
- https://github.com/wren-lang/wren/pull/874
min(other)
, max(other)
, clamp(min, max)
- https://github.com/wren-lang/wren/commit/8361217369825cd3ce730586d43f3994733b997e
cbrt
for cube root - https://github.com/wren-lang/wren/pull/905
exp
, log2
- https://github.com/wren-lang/wren/commit/433fbc40195ddf1c837c1c56e14e15e5633e1bb3
Fn
calls - https://github.com/wren-lang/wren/pull/807
Bool
, Num
and Null
allowing subclassing, which is invalid - https://github.com/wren-lang/wren/pull/831
userData
to wrenReallocateFn
- https://github.com/wren-lang/wren/pull/788
WrenLoadModuleResult
which has a onComplete
callback, allowing freeing module strings - https://github.com/wren-lang/wren/pull/778
wrenGetVersionNumber
for external access via the API - https://github.com/wren-lang/wren/pull/958
wrenHasVariable
and wrenHasModule
queries, for use with wrenGetVariable
- https://github.com/wren-lang/wren/commit/182ca90b8c9e14a88837699f1fa95f61d19b0f0a
wrenSetListElement
to complement wrenGetListElement
, and allow negative index for both - https://github.com/wren-lang/wren/commit/97ebcc72c36f8ea81ed8bbfac8e165f7ef74495f
This release is a draft.
continue
keyword - https://github.com/wren-lang/wren/pull/822
as
: import "..." for Name as OtherName
- https://github.com/wren-lang/wren/pull/775
.
to be on a different line (for fluent/builder APIs) - https://github.com/wren-lang/wren/commit/4c496c56a6bc51c5922a5ed19b6e0ec9b1b00de6
list.sort()
and list.sort {|a, b| ... }
(quicksort) - https://github.com/wren-lang/wren/pull/802
list.swap(index0, index1)
for swapping elements within a list - https://github.com/wren-lang/wren/commit/38f50fe091159ff8b114b9cbd0054456f7ed5366
list.indexOf(value)
for finding values in a list - https://github.com/wren-lang/wren/commit/62009870a8031acf231e5fb5eba13e4f6d334a07
Num.tau
- https://github.com/wren-lang/wren/commit/89c5e224809effae59dfe3cb0e2425b23d1722f1
Num.nan
, Num.infinity
- https://github.com/wren-lang/wren/pull/781
min(other)
, max(other)
, clamp(min, max)
- https://github.com/wren-lang/wren/commit/8361217369825cd3ce730586d43f3994733b997e
exp
, log2
- https://github.com/wren-lang/wren/commit/433fbc40195ddf1c837c1c56e14e15e5633e1bb3
Fn
calls - https://github.com/wren-lang/wren/pull/807
Bool
, Num
and Null
allowing subclassing, which is invalid - https://github.com/wren-lang/wren/pull/831
userData
to wrenReallocateFn
- https://github.com/wren-lang/wren/pull/788
WrenLoadModuleResult
which has a onComplete
callback, allowing freeing module strings - https://github.com/wren-lang/wren/pull/778
wrenHasVariable
and wrenHasModule
queries, for use with wrenGetVariable
- https://github.com/wren-lang/wren/commit/182ca90b8c9e14a88837699f1fa95f61d19b0f0a
wrenSetListElement
to complement wrenGetListElement
, and allow negative index for both - https://github.com/wren-lang/wren/commit/97ebcc72c36f8ea81ed8bbfac8e165f7ef74495f
Read the 0.3.0 release blog for more details, and plans for 0.4.0.
Note You can try Wren on http://wren.io/try, and Wren CLI now has downloads.
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 it's 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.
Read the 0.2.0 release blog for details, and plans for 0.3.0.
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 are some minor API changes, be sure your header is up to date so the compiler can tell you what changed. There's too many changes to explicitly list, so 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 first call
/transfer
String.trim
, String.trimEnd
, String.trimStart
variantsString.split
, String.replace
, String.fromByte
String.indexOf(needle, startIndex)
Sequence.take
and Sequence.skip
Num.pow
, Num.log
, Num.round
Num.largest
, Num.smallest
List.filled(count, value)
Map
iteration (MapEntry
)wren.hpp
for use in c++WrenVM
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.
--version
process
module to os