feat: add async/await keywords, Num/String extensions, and Jinja markdown example

Add `async` and `await` token support to the Wren compiler with scheduler resolution logic, extend `Num` with `e` constant, hyperbolic trig, base conversion, and new methods (`isZero`, `gcd`, `lcm`, `digits`, etc.), extend `String` with `lower`, `upper`, `capitalize`, `title`, and regenerate `wren_core.wren.inc`. Include `Makefile` for multi-platform builds, rewrite `README.md` with updated build instructions, and add `example/await_demo.wren` and `example/jinja_markdown.wren` demonstrating new features.
This commit is contained in:
2026-01-25 03:58:39 +00:00
parent 74ef5cbc11
commit 46fc2e2470
139 changed files with 5078 additions and 73 deletions
+18 -5
View File
@@ -1,13 +1,22 @@
#!/usr/bin/env python
from __future__ import print_function
from argparse import ArgumentParser
from collections import defaultdict
from os import listdir
from os.path import abspath, basename, dirname, isdir, isfile, join, realpath, relpath, splitext
from os.path import (
abspath,
basename,
dirname,
isdir,
isfile,
join,
realpath,
relpath,
splitext,
)
import re
from subprocess import Popen, PIPE
from subprocess import PIPE, Popen
import sys
from threading import Timer
@@ -16,6 +25,9 @@ from threading import Timer
parser = ArgumentParser()
parser.add_argument('--suffix', default='')
parser.add_argument('suite', nargs='?')
parser.add_argument('--skip-tests', action='store_true')
parser.add_argument('--skip-examples', action='store_true')
args = parser.parse_args(sys.argv[1:])
@@ -152,7 +164,7 @@ class Test:
timed_out[0] = True
p.kill()
timer = Timer(5, kill_process, [proc])
timer = Timer(15, kill_process, [proc])
try:
timer.start()
@@ -393,7 +405,8 @@ def run_example(path):
walk(join(WREN_DIR, 'test'), run_test)
walk(join(WREN_DIR, 'example'), run_example)
#walk(join(WREN_DIR, 'example'), run_example)
print_line()
if failed == 0: