Bob Nystrom
a5dc5e8390
Sort cases alphabetically.
...
Thanks, Michel!
2015-12-26 20:13:39 -08:00
Bob Nystrom
4ad4953196
Fix typo.
...
Thanks, Michel!
2015-12-26 20:12:35 -08:00
Bob Nystrom
8ab329ff91
Make wren.mk log wren_to_c_string.
...
Thanks, Michel!
2015-12-26 20:11:48 -08:00
Bob Nystrom
8203baf7bd
Initialize match in the test script.
...
Thanks, Michel!
2015-12-26 20:08:20 -08:00
Bob Nystrom
0ac793d4f8
Add Directory.list() to io.
2015-12-24 10:12:12 -08:00
Bob Nystrom
1ebc711c30
Allow call and unary expressions as map keys.
2015-12-22 16:00:50 -08:00
Bob Nystrom
55beda3ea9
Simplify the foreign call preamble a bit.
...
We don't need to store the number of arguments since we can calculate
it from the start and top of the stack.
2015-12-15 17:10:02 -08:00
Bob Nystrom
01e8f9053e
Add a benchmark to test the Wren C API.
...
I've got some ideas on how to tweak the embedding API, but I want to
see what performance impact they have first, so this adds a little
benchmark that just calls a foreign method a ton of times.
2015-12-15 16:02:13 -08:00
Bob Nystrom
873926915f
Don't allow fibers as map keys.
...
I hacked in support for it for a misguided reason (trying to fake
"thread-local storage") and ended up not using it for that anyway.
2015-12-15 10:42:21 -08:00
Bob Nystrom
8d9feb4bc9
Fix typo in benchmark.
2015-12-15 10:37:53 -08:00
Bob Nystrom
bcc40ab66a
Clean up a few little things:
...
- Fix the instruction output when debug dumping code.
- Don't pass around the classCompiler since Compiler stores it.
2015-12-14 17:10:10 -08:00
Bob Nystrom
e7d10218db
Grow the stack as needed.
...
This is untuned for performance, but seems to be doing the right thing.
2015-12-14 08:00:22 -08:00
Bob Nystrom
c7cd1fb1ac
Track the maximum number of slots each function may use.
...
This is the first step towards dynamically grown stacks. We don't want
to check for stack overflow on every single push, so we store the max
number of slots a function might need and (in later patches) ensure
at function call time that that many slots are available.
2015-12-13 22:57:40 -08:00
Bob Nystrom
2df5362ab2
Handle compile errors in imported modules.
2015-12-08 07:49:37 -08:00
Bob Nystrom
bfa86b259a
Ignore newlines in imports.
2015-12-07 19:41:10 -08:00
Bob Nystrom
6ff5fb9ff2
Allow empty ranges at the end of a sequence.
2015-12-06 10:37:58 -08:00
Bob Nystrom
10ece995f7
Add some Dart benchmarks running on fletch.
2015-12-05 11:09:30 -08:00
Bob Nystrom
0f9e2a49ce
Fix "%" in error message.
2015-12-05 10:15:18 -08:00
Bob Nystrom
37b70db1b0
Make delta_blue more idiomatic Wren.
2015-11-30 20:58:08 -08:00
Bob Nystrom
a38753d1d6
Add an animals guessing game example.
2015-11-29 09:43:47 -08:00
Bob Nystrom
c46507d937
Fix .gitignore (and add incorrectly ignored file!)
2015-11-27 11:22:09 -08:00
Bob Nystrom
5454152dff
Merge pull request #313 from acook/patch-1
...
Fixing a couple of typos in the classes docs.
2015-11-25 08:59:16 -08:00
Bob Nystrom
69a5c1d017
Avoid empty array initializer which seems to be problematic on VC++.
2015-11-25 08:36:42 -08:00
Bob Nystrom
5bde04db4c
Eagerly evaluate interpolated expressions.
...
If we ever support custom string templates, we'll need to go back to
compiling them to functions. But, for now, they can be evaluated
eagerly, leading to simpler code.
2015-11-23 07:08:14 -08:00
Bob Nystrom
fb72e0fff7
Document method scope.
2015-11-21 14:00:21 -08:00
Bob Nystrom
03163a760f
Document interpolation.
2015-11-21 09:20:50 -08:00
Bob Nystrom
78655c68b0
Simple string interpolation.
...
This allows "%(...)" inside a string literal to interpolate the
stringified result of an expression.
It doesn't support custom interpolators or format strings, but we can
consider extending that later.
2015-11-11 07:55:48 -08:00
Bob Nystrom
71575d9179
Switch to O3 for release builds.
...
It now seems to be fairly consistently faster on my machine:
binary_trees - wren 0.22s 0.0023 100.10% relative to baseline
binary_trees_gc - wren 0.85s 0.0160 112.63% relative to baseline
delta_blue - wren 0.12s 0.0044 102.91% relative to baseline
fib - wren 0.21s 0.0021 103.34% relative to baseline
fibers - wren 0.26s 0.0083 102.46% relative to baseline
for - wren 0.08s 0.0024 111.82% relative to baseline
method_call - wren 0.11s 0.0087 94.56% relative to baseline
map_numeric - wren 0.32s 0.0042 109.83% relative to baseline
map_string - wren 0.11s 0.0096 105.69% relative to baseline
string_equals - wren 0.19s 0.0028 110.00% relative to baseline
2015-11-10 07:33:15 -08:00
Bob Nystrom
aaab14959f
Get rid of extraneous "," in module macros.
...
Thanks, Michel!
2015-11-10 07:13:19 -08:00
Bob Nystrom
de7b062a03
Tweak module docs a bit.
2015-11-09 07:42:48 -08:00
Bob Nystrom
902289d7dd
Document the "random" module.
2015-11-09 07:37:06 -08:00
Bob Nystrom
82706b74fc
Reorganize site to make room for documenting the other built-in modules.
2015-11-08 13:31:22 -08:00
Bob Nystrom
8c0dae1320
Move precedence table to syntax page.
2015-11-08 10:59:23 -08:00
Bob Nystrom
0bf5dc42ef
Remove outdated docs.
2015-11-07 13:00:49 -08:00
Bob Nystrom
7ae9888c4f
It turns out "is" is just a normal overridable operator. Who knew?
2015-11-07 13:00:24 -08:00
Bob Nystrom
931d9ca4d3
Reorganize the language guide.
...
- Rename "Expressions" -> "Method Calls".
- Organize "Types" and "Language" into a single linear narrative.
- Mobile-specific navigation to handle the longer guide.
- Rename "Fibers" -> "Concurrency".
- Get rid of duplicate stuff about signatures in "Classes".
- Add next/prev links to each page in the guide.
- Move "Contributing" and "Community" up to the top level.
- Move the precendence table to a separate "Grammar" page.
- Lots of other little stuff.
2015-11-07 11:09:04 -08:00
Bob Nystrom
bbd6b827b5
Fix C++ compile errors.
2015-11-04 07:07:33 -08:00
Bob Nystrom
2ff8acbe1a
Tweak a few things in the new GC.
...
- Make sure it handles an empty gray set.
- Make sure growing the gray stack doesn't itself trigger a GC.
- Make sure it works when stress testing is enabled.
- Ensure the tests kick off a GC.
2015-10-29 07:38:09 -07:00
Bob Nystrom
25bd182c58
Fix some typos and rename some functions.
...
Makes the tri-color abstraction more explicit throughout the code.
2015-10-28 07:55:04 -07:00
Bob Nystrom
e3c9324dd9
Merge branch 'master' into iwillspeak-iterative-gc
2015-10-28 07:46:06 -07:00
Bob Nystrom
e985e6fe07
Make sure binary_trees_gc actually stresses GC.
2015-10-28 07:45:52 -07:00
Bob Nystrom
b365c07d7a
Add a benchmark that explicitly invokes the GC.
2015-10-24 11:00:17 -07:00
Bob Nystrom
0f7d4dd4d0
Add a timeout to the test runner.
...
This ensures that when you run the tests while stress testing the GC,
that a pathological test won't hang forever.
2015-10-24 10:58:21 -07:00
Bob Nystrom
720c03cf49
Add System.gc().
2015-10-24 10:56:27 -07:00
Bob Nystrom
f145662158
"Auxiliary" -> "optional".
...
Fixes #309 .
2015-10-24 09:23:25 -07:00
Bob Nystrom
545a4cbf7e
Style example output and errors in the docs.
2015-10-18 15:56:52 -07:00
Bob Nystrom
2174ff31e7
Merge pull request #308 from iwillspeak/master
...
Add Will Speak to Authors File
2015-10-18 10:35:14 -07:00
Bob Nystrom
30e7d9e508
Move core.wren to be next to wren_core.wren.inc.
2015-10-17 22:17:10 -07:00
Bob Nystrom
e5176607d9
Move meta and random to "aux" modules.
...
Wren now has three classes of modules:
- The one magic "core" module that's built in and always needed.
- Auxiliary libraries like "meta" and "random". These do not have any
dependencies, so can be used even when you embed Wren inside an
application. But they're also optional and can be disabled if you
don't need them.
- CLI modules. These ones need libuv and are tied to the CLI wrapper
around the VM.
2015-10-17 22:09:48 -07:00
Bob Nystrom
3ca480cbf4
Merge branch 'master' of https://github.com/iwillspeak/wren into iwillspeak-master
2015-10-17 20:07:52 -07:00
Bob Nystrom
a3f3e3ce03
Don't try to run the guess_number example from the test script.
2015-10-17 13:29:50 -07:00
Bob Nystrom
2c5926b32b
Add guess a number example.
2015-10-17 11:19:25 -07:00
Bob Nystrom
5d6ed0958c
Use explicit constant for 2**53.
2015-10-17 11:07:13 -07:00
Bob Nystrom
8436ce1934
Add a random module.
2015-10-17 11:03:15 -07:00
Bob Nystrom
49601e67c5
Don't require nonstandard __builtin_unreachable() in UNREACHABLE().
...
Fix #304 (I hope).
2015-10-16 21:51:30 -07:00
Bob Nystrom
29eebe4928
Tweak libuv.py a bit.
2015-10-16 21:33:22 -07:00
Bob Nystrom
82d6453a7e
Merge branch 'master' of https://github.com/ppearson/wren into ppearson-master
2015-10-16 21:24:22 -07:00
Bob Nystrom
d431c2eaa8
Start sketching in support for reading from stdin.
2015-10-16 21:05:24 -07:00
Bob Nystrom
c714c53c83
"Library" -> "module".
2015-10-15 19:38:25 -07:00
Bob Nystrom
3b09b35b59
Get rid of source path in module.
...
It wasn't useful anyway since it always had the module name for all but
the main script.
2015-10-15 18:17:42 -07:00
Bob Nystrom
d5b9f0096c
Move Meta to a separate module.
...
Also cleaned up some of the code around loading the core module.
2015-10-15 18:08:56 -07:00
Bob Nystrom
06a4e00f31
Store the module debug path in the ObjModule.
...
Thanks, Michel!
2015-10-14 07:37:13 -07:00
Bob Nystrom
8980d34ee5
Only close an upvalue for a local if there actually is one for it.
2015-10-08 08:06:29 -07:00
Bob Nystrom
24cbb7f399
Fix closures in methods.
...
A local name inside a method should always resolve to a self send even
if there is a local variable with that name outside of the method.
2015-10-05 07:44:51 -07:00
Bob Nystrom
e968b4bf98
Fix two typos in the docs.
2015-10-03 21:45:59 -07:00
Bob Nystrom
76d188e018
Get rid of PrimitiveResult.
...
Primitives still have a return value to indicate normal value returning
versus runtime errors or fiber switching since it minimizes branches
in the common case of a normal value result.
2015-10-03 20:43:12 -07:00
Bob Nystrom
812bc15380
Get rid of the special "call" primitive result type.
...
Instead, Fn.call(...) is a special *method* type that has the same
special sauce. The goal is eventually to get rid of the primitive
result type entirely.
2015-10-03 19:04:11 -07:00
Bob Nystrom
e41d9eac7c
Tweak the embedding docs a bit.
2015-10-02 21:25:55 -07:00
Bob Nystrom
d61d7fd5b4
Don't pass fiber explicitly to primitives.
...
Thanks, Michel!
2015-10-02 07:51:12 -07:00
Bob Nystrom
b7ed774da3
Reading files!
...
- File.close()
- File.open()
- File.read()
- file.readBytes()
And a few other little methods. Still lots more work to do, but it's a
start.
2015-09-30 21:13:36 -07:00
Bob Nystrom
bacbd85543
Add .isInfinity and .isInteger to Num.
2015-09-30 08:41:43 -07:00
Bob Nystrom
5129597c63
Unify PRIM_ERROR and PRIM_RUN_FIBER.
2015-09-30 07:32:39 -07:00
Bob Nystrom
b05a74da19
Revamp how runtime errors and fiber switching is handled.
...
- Add Fiber.transferError(_).
- Primitives place runtime errors directly in the fiber instead of on
the stack.
- Primitives that change fibers set it directly in the VM.
- Allow a fiber's error to be any object (except null).
2015-09-29 22:57:03 -07:00
Bob Nystrom
79354f5a97
Do some work on wrenCall().
...
- Add an explicit va_list version. That lets variadic functions
forward to it.
- Fix a GC bug in wrenCall() with return values.
- Make the call API test not re-enter the VM.
2015-09-29 19:29:10 -07:00
Bob Nystrom
f757c9efac
Better embedding API support (and tests!) for strings with null bytes.
...
- Test that a foreign method can return strings.
- Test that a foreign method can return a string with null bytes.
- Test wrenCall().
- Allow passing NULL for "v" to wrenCall().
- Allow "a" for passing an explicit length byte array to wrenCall().
2015-09-24 08:02:31 -07:00
Bob Nystrom
a944ead5b4
Give the docs some love.
2015-09-22 21:19:38 -07:00
Bob Nystrom
505b48fdac
Add a real Pygments lexer for Wren (finally!).
2015-09-22 07:59:54 -07:00
Bob Nystrom
36f7d74183
Unify "script" and "project" under "util".
2015-09-22 07:45:58 -07:00
Bob Nystrom
2f9ba2beaa
Merge branch 'buildfix' of https://github.com/krypt-n/wren into krypt-n-buildfix
2015-09-21 19:48:08 -07:00
Bob Nystrom
f6083b1756
Simplify how built-in foreign methods and classes are wired up.
2015-09-21 07:58:39 -07:00
Bob Nystrom
8ef4ea6186
Allow super calls in static methods.
2015-09-19 15:19:41 -07:00
Bob Nystrom
19f70b4035
Simplify and optimize how keywords are lexed.
2015-09-17 20:51:24 -07:00
Bob Nystrom
dc527c8d86
Add "io" module with beginnings of a File class.
2015-09-16 07:34:49 -07:00
Bob Nystrom
251752fcfb
Make join() require parentheses without a separator.
2015-09-16 07:15:48 -07:00
Bob Nystrom
efceee4320
Let the host application control how System prints text.
2015-09-15 23:01:43 -07:00
Bob Nystrom
58e4d26648
"IO" -> "System".
...
Get rid of the separate opt-in IO class and replace it with a core
System class.
- Remove wren_io.c, wren_io.h, and io.wren.
- Remove the flags that disable it.
- Remove the overloads for print() with different arity. (It was an
experiment, but I don't think it's that useful.)
- Remove IO.read(). That will reappear using libuv in the CLI at some
point.
- Remove IO.time. Doesn't seem to have been used.
- Update all of the tests, docs, etc.
I'm sorry for all the breakage this causes, but I think "System" is a
better name for this class (it makes it natural to add things like
"System.gc()") and frees up "IO" for referring to the CLI's IO module.
2015-09-15 07:46:09 -07:00
Bob Nystrom
66b89a493f
Combine io.c and vm.c.
...
(This is mainly to free up io.c as a built in module.)
2015-09-13 22:29:47 -07:00
Bob Nystrom
ea5c3b01eb
Add module for Scheduler.
...
Also reorganizes some code to make it easier to add more modules.
2015-09-13 11:32:39 -07:00
Bob Nystrom
f36a795534
Automatically update the string constants when a builtin module changes.
2015-09-13 10:03:02 -07:00
Bob Nystrom
e1cf8e22c3
Merge pull request #300 from jesskay/patch-1
...
Correct platform.system() call
2015-09-12 10:45:18 -07:00
Bob Nystrom
1a27593993
Error if a class tries to inherit from null.
...
Fix #246 .
2015-09-12 10:14:04 -07:00
Bob Nystrom
e1f979e78a
Don't use string length in map benchmark (since it's slow now).
2015-09-12 09:59:30 -07:00
Bob Nystrom
92c2b2d5e0
Copy edit the string docs.
2015-09-12 09:42:31 -07:00
Bob Nystrom
fe143644b3
Rationalize string lengths.
...
The .count getter on string returns the number of code points. That's
O(n), but it's consistent with the rest of the main string API.
If you want the number of bytes, it's "string".bytes.count.
Updated the docs.
Fixes 68. Woo!
2015-09-11 21:33:26 -07:00
Bob Nystrom
c0b5ec9f15
Move codePointAt() to separate CodePointSequence class.
2015-09-11 07:56:01 -07:00
Bob Nystrom
bda9ad880a
Flesh out string byte handling a bit:
...
- Get rid of public byteAt(_) method on strings. It's redundant and
longer than .bytes[_].
- Implement bytes.count natively so it's O(1).
2015-09-10 23:52:18 -07:00
Bob Nystrom
adcb5bccba
Simplify emitConstant().
...
Thanks, Michel!
2015-09-09 06:44:26 -07:00
Bob Nystrom
1df7565bb9
Fix bug in passing a range as the string subscript.
2015-09-08 20:59:47 -07:00
Bob Nystrom
783a5b750a
Get ranges working in string subscripts (again).
...
Now with UTF-8 hotness!
2015-09-01 22:14:55 -07:00
Bob Nystrom
2e83f056c1
No more default constructors.
...
Fixes #296 .
2015-09-01 08:16:04 -07:00