Commit Graph

972 Commits

Author SHA1 Message Date
b5894c6ff5 wren: Remove a magic number in the compiler. (#757) 2020-06-13 21:24:37 -07:00
9f64c05fa8 Make do blocks in macros consistent with the rest of the code 2020-06-08 12:28:15 -07:00
26d0194117 wren/vm: Uniformize macros to stick to 80 columns. (#756)
uniform macros
2020-06-08 12:23:15 -07:00
d585a080e8 Merge pull request #751 from wren-lang/0.3.0-refactor
0.3.0 refactor
2020-06-05 14:57:20 -07:00
6ab4abe9e3 cli; Fix a memory leak in findModulesDirectory() (#718) 2019-12-27 10:42:32 -08:00
186a8c7c13 Fixed Random.sample(list, count) for small number of samples (#714)
Closes #713
2019-12-11 15:40:07 -08:00
b120739631 fix minor warning 2019-10-07 23:43:05 -07:00
5338275dcd 0.2.0 prep work 2019-09-30 21:38:08 -07:00
3eb4ac1419 Add a clearer error message for forward declared lowercase variables (#699)
* Add better error messaging for forward referenced top level variables, see #467
* add test case
2019-09-30 20:30:27 -07:00
688691b17c Don't access null pointers when printing null module names
fixes #631
2019-09-18 22:49:01 -07:00
898e5356c7 Merge pull request #562 from Salmela/locals-array-overflow-fix
Check that there is space in local variable array
2019-09-18 00:20:03 -07:00
cdeb0db5c3 disambiguate the call here from the call in wren_compiler.c (fixes amalgamation having overalapped symbols) 2019-09-18 00:08:07 -07:00
123ba80a89 fix warning about conversion from '__int64' to 'double', possible loss of data 2019-09-18 00:05:16 -07:00
f91586a71a Fix wrenAbortFiber does not work inside of foreign class allocator 2019-09-17 19:43:53 +02:00
2a1499b04b Fix horrendously bad bit hashing function.
hashBits() is used to generate a hash code from the same 64 bits used
to represent a Wren number as a double. When building a map containing
a large number of integer keys, it's important for this to do a good
job scattering the bits across the 32-bit key space.

Alas, it does not. Worse, the benchmark to test this happens to stop
just before the performance falls off a cliff, so this was easy to
overlook.

This replaces it with the hash function V8 uses, which has much better
performance across the numeric range.
2019-07-27 13:34:07 -07:00
vvn
5725ecad67 Update path.c 2019-06-13 14:51:28 +08:00
a437e804ba Added String.fromByte with docs and unit test 2019-02-27 08:10:54 -05:00
kai
c58e51fa96 Fixed compiling error of cli on Windows 2019-02-19 15:14:53 +08:00
1ec0b649c1 Merge pull request #589 from FICTURE7/master
Renamed include guard in wren_compiler.h
2019-02-15 07:30:46 -08:00
51c857ab0e Merge pull request #610 from jyaif/bar
Remove unused prototype.
2019-02-15 07:30:16 -08:00
abbb410ff2 Fix assert in insertEntry().
The intent of the assert is to ensure that insertEntry() is not called
with an empty entries array because that would cause you to get into a
code path where the entry output parameter is not set. But the assert
didn't correctly check that.

Fix #635.
2019-02-14 07:51:57 -08:00
03d70f336f Merge pull request #620 from PrimordialHelios/fixup_overflow
Fix overflow on line 401 of wren_compiler.c
2019-02-14 07:42:12 -08:00
b2a2494008 Regenerate REPL include. 2019-02-14 07:33:30 -08:00
35df7faa1e Merge branch 'repl_keys' of https://github.com/PrimordialHelios/wren into PrimordialHelios-repl_keys
# Conflicts:
#	AUTHORS
2019-02-14 07:31:22 -08:00
8a0d2297a1 Merge pull request #615 from iwillspeak/repl-escape-fix
Fixup Handling of `\` in REPL to Prevent Crash
2019-02-11 22:58:06 -08:00
52c16b4f80 Merge branch 'wrenHasError' of https://github.com/mhermier/canary into mhermier-wrenHasError 2019-02-11 07:52:38 -08:00
a5147aa2d9 Add a limited form of re-entrant calls.
This doesn't let you arbitrarily call back into the VM from within
foreign methods. I'm still not sure if that's even a good idea since
God knows what that would mean if you switch fibers while doing that.

But this does allow the very important use case of being able to call
a foreign method from within a call to wrenCall(). In other words,
foreign methods need to always be leaf calls on the call stack, but the
root of that stack can now come from runInterpreter() or wrenCall().

Fix #510.
2019-02-08 17:09:39 -08:00
193e0c812c Change size of label on line 449 to avoid incorrect compiler warning about label's maximum length 2018-12-19 09:38:26 -05:00
31e179907d Add support for home, end, delete, and ctrl+w 2018-10-31 18:32:34 -04:00
a4b034f30b Fixup Handling of \ in REPL to Prevent Crash
When parsing the string token if a `\` was used it would
unconditionally consume the next character. This would led to a token
with an invalid lenght causing a crash when it was printed. This fixes
that by only consuming the token after the `\` if there is one to
consume.

Fixes #603
2018-10-08 07:35:55 +01:00
8929415847 Remove unused prototype. 2018-09-27 15:03:10 +02:00
fefed21158 Rename include guard 2018-07-27 18:57:17 +04:00
fe57c1eea0 Trivial: wren_core.wren.inc needs to be regenerated. 2018-07-25 11:58:50 +02:00
051e224ce6 De-inline wrenHasError.
Move fiber error detection inside a function instead of using inlined
version everywhere.
2018-07-25 11:55:03 +02:00
03ec25720d Add cast to satisfy the C++ warning gods. 2018-07-24 07:21:41 -07:00
f23c82071a Don't allow calling the root fiber.
The VM used to not detect this case. It meant you could get into a
situation where another fiber's caller had completed. Then, when it
tried to resume that fiber, the VM would crash because there was nothing
to resume to.

This is part of thinking through all the cases around re-entrancy. Added
some notes for that too.
2018-07-21 10:02:29 -07:00
5f29a72d65 Remove the special method type for Fn.call(...).
Instead, using regular primitives for each of the call() methods.
Doesn't help performance (alas), but does seem cleaner to me.
2018-07-18 08:20:11 -07:00
7a42a20b98 Merge branch 'master' into smarter-imports
# Conflicts:
#	src/module/io.c
#	src/vm/wren_vm.c
2018-07-15 21:01:14 -07:00
c367fc3bfc Get logical imports in "wren_modules" working.
There's a lot of changes here and surely some rough edges to iron out.
Also, I need to update the docs. But I want to get closer to landing
this so I can build on it.
2018-07-15 20:09:41 -07:00
09f4beff4a Add trim methods on String:
- trim()
- trim(chars)
- trimEnd()
- trimEnd(chars)
- trimStart()
- trimStart(chars)
2018-07-15 10:48:56 -07:00
a3c2402ca0 Merge branch 'missing_undef' of https://github.com/dressupgeekout/wren into dressupgeekout-missing_undef
# Conflicts:
#	AUTHORS
2018-07-13 07:01:57 -07:00
ad9a0e13ac Small improvements
* Safer definitions in io.c
* Easier to understand information in repl.wren
* Added my e-mail; Contributing > Hacking on the VM
2018-07-12 21:50:23 +02:00
e7b1bade1a Check that there is space in local variable array
Otherwise it can overflow due to for loop's hidden
variables.

Fix #561
2018-06-13 00:59:55 +03:00
18f74d89c4 Don't forget to #undef FINALIZER 2018-06-05 13:27:45 -07:00
40c927f440 Make sure we consume all the input when compiling a single expression.
Fix #528.
2018-04-28 16:54:33 -07:00
c4ae0f5c59 Be a little more conservative with some string operations.
This should hopefully fix #531, though in practice the previous code
should have been safe too.
2018-04-28 16:38:09 -07:00
41a56446c6 Refine a few things:
- Fix some doc comments.

- Inline comparing two ObjStrings, since it's only used in one place.
  Also, this avoids a redundant identity check.

- Move the forward declarations of the object types out of
  wren_common.h. Instead, I just added the one needed forward
  declaration of ObjString in wren_utils.h. It's a little inelegant,
  but it feels weird to me to expose all of the object types in
  wren_common.h when they logically belong to wren_value.h and most of
  the types aren't problematic.

- Fix a bug where field symbol tables weren't being marked. If a GC
  happened while compiling a class, field strings got freed.
2018-04-28 12:13:03 -07:00
05e18fa95f Merge branch 'unify_string' of https://github.com/mhermier/wren into mhermier-unify_string 2018-04-28 10:22:42 -07:00
d03ef9e8b0 Move test and tweak code a bit. 2018-04-28 10:08:42 -07:00
4d056b6ec3 Merge branch 'master' of https://github.com/jclc/wren into jclc-master 2018-04-28 10:00:59 -07:00