Commit Graph
104 Commits
Author SHA1 Message Date
Bob Nystrom 2b044666ee Reorganize trailing comma code a bit.
- Split out syntax error tests.
- Avoid redundant handling of empty literals.
2015-08-31 07:23:36 -07:00
Bob Nystrom 556af50f83 Revise low level fiber semantics to play nicer with schedulers.
Now that I'm starting to write a real async scheduler on top of Wren's
basic fiber API, I have a better feel for what it needs. It turns out
run() is not it.

- Remove run() methods.
- Add transfer() which leaves the caller of the invoked fiber alone.
- Add suspend() to return control to the host application.
- Add Timer.schedule() to start a new independently scheduled fiber.
- Change Timer.sleep() so that it only transfers control to explicitly
  scheduled fibers, not any one.
2015-08-30 22:15:37 -07:00
Bob Nystrom 91af02ac81 Merge branch 'master' into libuv
# Conflicts:
#	project/xcode/wren.xcodeproj/project.pbxproj
#	script/wren.mk
#	src/cli/main.c
#	src/cli/vm.c
#	src/cli/vm.h
#	test/api/main.c
2015-08-28 23:13:56 -07:00
Bob Nystrom 647e70a8be Print output when a command fails in libuv.py. 2015-08-28 20:14:55 -07:00
Bob Nystrom 52f7f96813 Get libuv building for all architectures on Linux. 2015-08-28 19:49:19 -07:00
Bob Nystrom b4deb30a02 Reorganize build scripts for libuv.
- Create separate libs for each architecture. OS X doesn't need this
  (we just build a universal binary), but it will help Linux.
- Move the libuv build stuff into wren.mk where the actual dependency
  on the lib is.
- Download libuv to deps/ instead of build/. That way "make clean"
  doesn't blow it away.
- Don't redownload libuv unless needed.
2015-08-28 19:31:03 -07:00
Bob Nystrom 0ae59be11a Use the same libuv output directory on Mac and Linux. 2015-08-27 07:55:12 -07:00
Bob Nystrom f33b362cc0 Clean up delta_blue benchmark. 2015-08-27 06:25:24 -07:00
Bob Nystrom 881824227d Don't count "{" or "}" in the line count. 2015-08-22 07:27:32 -07:00
Bob Nystrom 147a0815f2 Tweak style. 2015-08-20 22:08:39 -07:00
Bob Nystrom 95ef53e758 Merge branch 'fix-windows-libuv' of https://github.com/Rohansi/wren into win 2015-08-20 22:07:34 -07:00
Bob Nystrom 69b0d34065 Start working on docs for the embedding API. 2015-08-20 22:02:13 -07:00
Bob Nystrom cd5087d222 Get 32-bit and C++ Mac builds happy with libuv. 2015-08-16 10:28:55 -07:00
Bob Nystrom 6be1dce49c Link to rtlib too. 2015-08-16 09:59:53 -07:00
Bob Nystrom 214f72ccf1 Put the libs last? 2015-08-16 09:57:47 -07:00
Bob Nystrom e6b0a89046 Try allowing gnu C99 extensions. 2015-08-16 09:55:50 -07:00
Bob Nystrom bd3a9ad7c6 Try including libuv as an object instead of linking to it. 2015-08-16 09:40:02 -07:00
Bob Nystrom 1f13416724 Remove libuv.a from the objects list. 2015-08-16 09:36:17 -07:00
Bob Nystrom 572ba7c7da Maybe the order of libraries matters... 2015-08-16 09:16:26 -07:00
Bob Nystrom 9608002d65 Try to get pthreads working on Linux (again...). 2015-08-16 09:07:41 -07:00
Rohan Singh c46519eeda Don't use rmtree on Windows if it's going to cause problems 2015-08-16 09:32:38 -04:00
Bob Nystrom 7a79b8fac6 Simplify the API tests.
Use fewer test suites with more tests in each one since there's so much
boilerplate for defining an API test.
2015-08-13 09:09:27 -07:00
Rohan Singh ad60a7e46e Update project files to build with libuv and the timer module 2015-08-13 01:39:34 -04:00
Bob Nystrom 8e791c70c0 Getting farther... 2015-08-08 09:14:52 -07:00
Bob Nystrom 0c5c291d85 Try to make Linux and libuv love each other. 2015-08-08 09:06:40 -07:00
Bob Nystrom eaaaca7cd2 Enable POSIX extensions when compiling stuff that uses libuv. 2015-08-08 08:57:57 -07:00
Bob Nystrom 8d90e093ea Try to get libuv working on Linux (again).
It seems to want to build to a different output directory on Mac and
Linux. I can't fix that, so just make our Makefile accommodate.
2015-08-08 07:40:27 -07:00
Bob Nystrom bb7485d46b Use the same libuv build directory on Linux. 2015-08-08 07:20:07 -07:00
Bob Nystrom 9845ed5126 Tests for Timer.sleep(). 2015-08-08 07:17:30 -07:00
Bob Nystrom d4acbe8a70 A vertical slice of real libuv integration.
This adds a "timer" module to the CLI that provides a Timer class with
a static sleep() method. Not the most exciting functionality in the
world, but it requires the full hunk of libuv integration:

- The CLI sets up libuv and runs the event loop.
- Added a new directory src/module for CLI modules.
- Updated all the make scripts to handle it.
- Reorganized some other CLI code.
2015-08-07 08:10:55 -07:00
Bob Nystrom d995dc894c Set working directory for Linux libuv compile. 2015-08-02 10:58:27 -07:00
Bob Nystrom 30752b26be First pass at compiling libuv on Linux. 2015-08-02 10:56:44 -07:00
Bob Nystrom 4a6d7e0428 Integrate libuv into Wren.
- Add a script that downloads and compiles libuv.
- Hook that up to the Makefile so it pulls down libuv on build.
- Add a separate "vm" target that just builds the VM library and skips
  libuv.
- Link to libuv when compiling the CLI.
- Update the XCode project to link to libuv too.

Linux and Windows support isn't done yet, but it should be pretty
straightforward to add to the Python script.
2015-08-02 10:43:38 -07:00
Bob Nystrom bc822cd4c7 Merge branch 'master' into constructor-methods 2015-07-19 12:49:23 -07:00
Bob Nystrom 6ece2c173b More test runner fixes. 2015-07-19 10:31:55 -07:00
Bob Nystrom 1b27d556e0 Fix bug in test runner. 2015-07-19 09:33:00 -07:00
Bob Nystrom 5fb6186d7d Make constructors just methods.
* Eliminate "new" reserved word.
* Allow "this" before a method definition to define a constructor.
* Only create a default constructor for classes that don't define one.
2015-07-10 09:18:22 -07:00
Bob Nystrom fa8ac84a8b Fix broken test runner (!).
If a test expected an error and found at least one, it would not fail
on any other expected errors that didn't occur.

Also, some tests were expecting a compile time error message even though
the test script doesn't validate those (yet).

The test function was getting monolithic, so I went ahead and split it
into a separate little class.
2015-07-09 08:06:33 -07:00
Bob Nystrom 2387d4dc31 Grow the call frame array dynamically.
Previously, fibers had a hard-coded limit to how big their stack size
is. This limit exists in two forms: the number of distinct call frames
(basically the maximum call depth), and the number of unique stack
slots.

This fixes the first half of this by dynamically allocating the call
frame array and growing it as needed. This makes new fibers smallers
since they can start with a very small array. Checking and growing as
needed doesn't noticeably regress the perf on the other benchmarks, and
it makes a new fiber benchmark about 45% faster.

The stack array is still hardcoded, but that will be in another commit.
2015-07-01 00:00:25 -07:00
Bob Nystrom 6c135e9941 Show number of expectations in test output. 2015-05-24 09:45:52 -07:00
Bob Nystrom 7084d6bfd5 Add infrastructure to test embedding API. 2015-05-24 09:23:30 -07:00
Kyle Marek-Spartz 5ad94fb4da Add ignored to walk() in test.py to clean up list of test dirs. 2015-05-21 09:17:40 -05:00
Kyle Marek-Spartz fc7612c843 Run examples as tests. Would have prevented #266 2015-05-20 10:10:40 -05:00
Bob Nystrom bead9a3406 Output amalgamation into build/. 2015-04-25 08:38:45 -07:00
Luchs 796639e371 Fix amalgamation to work with X Macro files 2015-04-16 14:45:22 +02:00
Luchs bc7bf2a09f Print LICENSE on top of the amalgamation 2015-04-16 14:45:22 +02:00
Luchs c44be6418b Add comments for file start/end 2015-04-16 14:45:22 +02:00
Luchs 9bcf31e14d Add amalgamation generation script 2015-04-16 14:45:22 +02:00
Luchs 4dad9cd688 Make builtin statics unambigous 2015-04-16 14:45:22 +02:00
Bob Nystrom 9bdbc05be1 Flush benchmark output after each ".".
Thanks, Michel!
2015-03-30 07:39:21 -07:00