Ian Piumarta
|
6ae2155b92
|
Remove let keyword in front of local definition.
|
11 maanden geleden |
Ian Piumarta
|
d6a9d2e88f
|
Remove let keyword in front of local definition.
|
11 maanden geleden |
Ian Piumarta
|
2e94543651
|
Enable profiling when poducing release binary.
|
11 maanden geleden |
Ian Piumarta
|
3d36581570
|
Include libffi in executable.
|
11 maanden geleden |
Ian Piumarta
|
4b75732a7e
|
Support super.id() to call method id in the delegate of the object in which the currently running method was found. Add __extern__ to support foreign function calls.
|
11 maanden geleden |
Ian Piumarta
|
f2e790cb26
|
Add String.bitSet, .bitClear, .bitInvert, bitTest, .charClass, .compareFrom.
|
11 maanden geleden |
Ian Piumarta
|
1fd5a0be12
|
New reference output.
|
11 maanden geleden |
Ian Piumarta
|
e57242eb5d
|
Prefix 'local' constrins variables to be in current scope. Variable references, inrement operator l-values, and function definitions can all be qualified 'local' or 'global'.
|
11 maanden geleden |
Ian Piumarta
|
4622db9d34
|
Simplify variable lookup and implicit variable declarations.
|
11 maanden geleden |
Ian Piumarta
|
2983237af0
|
Object.push(x) returns self, not x.
|
11 maanden geleden |
Ian Piumarta
|
2171f47dce
|
Fold constants during parsing if FOLDCONST=1.
|
11 maanden geleden |
Ian Piumarta
|
4d396d6170
|
Fix floating point comparison and assignment operators.
|
11 maanden geleden |
Ian Piumarta
|
883a9cf7c2
|
Remove let and ::. Add global keyword. Add Ref/Get/SetSym. Cast the 0 terminator in genericError to oop to ensure va_arg picks it up. Better error messages for broken statements in blocks and broken expressions in argument lists.
|
11 maanden geleden |
Ian Piumarta
|
ea60878c24
|
Add exception tests. New test.txt reference output.
|
11 maanden geleden |
Ian Piumarta
|
dcbef49750
|
Exceptions are supported with syntax "try {} catch (e) {}", "try {} ensure {}", and "raise e". Add catch to the list of words that can end an expression statement. Most runtime errors are reported using exceptions when EXCEPTIONS=1. Add String_repeat() supporting multiplying a string and an integer. Illegal escape sequence in a string is a warning not an error. Break and continue work properly in while(). ForFromTo evaluates its start and end arguments. Rename primitive fatal() to error().
|
11 maanden geleden |
Ian Piumarta
|
207ef22fb0
|
Upate test reference output.
|
11 maanden geleden |
Ian Piumarta
|
46c7ef6f32
|
Run the first non-option command line argument as the program. Set _argv__ to program name plus any following command-line arguments.
|
11 maanden geleden |
Ian Piumarta
|
2fcfaa962b
|
Primitives have a unique integer index to identify them. Add String_appendString(base, ext) with the obvious behaviour. Rename newStringEscaped -> newStringUnescaped to describe its operation not its input. Add String_escaped() to replace non-graphic characters. Add String_push() to append characters or strings. Add __primitives__ containing an array of all primitives. Add reverseString() that reverse a string in-place. Add reverseObject() that reverses an object in-place. Add reversed() that returns a reversed copy of an object or string. Fix Let_codeOn() to avoid the # in front of the variable name. Add /* ... */ syntax for multi-line, nesting comments. Add method String.new() to make a new, empty string. Add methods String.escaped(), String.unescaped(). Add method String.push() to append a character or another string. Add method String.pop() to remove and return the last character. Add methods String.asInteger(), String.asFloat(), String.asSymbol(). Provide an implementation of strnstr() for C libraries that lack it. Add method Object.includes() that searches indexable part of an object. Add method String.includes() that searches for characters or strings. Add String.sliced(start, stop) that returns a sub-string. Add method Symbol.asString(). Add method Object.findKey(). Add primitive reversed(). Add methods Symbol.getopt() and Symbol.setopt(). Add method Symbol.defined() that checks the global value, whereas the defined() primitive checks all visible bindings. Add method Symbol.define() to set the global value. Add method Symbol.value() to retrieve the global value. Add method Symbol.allInstances().
|
1 jaar geleden |
Ian Piumarta
|
cd992e141e
|
Include profile guided optimisation workload.
|
1 jaar geleden |
Ian Piumarta
|
f75c06ca3e
|
Target minproto-opt built with TYPECODES and DELOPT enabled. Target release profiles with -O to disable backtrace.
|
1 jaar geleden |
Ian Piumarta
|
09c41142f3
|
<type>.eval methods are installed in all built-in object types when TYPECODES=1. println() prints object properties in alphabetical order.
|
1 jaar geleden |
Ian Piumarta
|
c5c29bdbb0
|
Add release target that uses profile guided optimisation.
|
1 jaar geleden |
Ian Piumarta
|
5e59fa586e
|
Restore original benchmark size and number of repeats.
|
1 jaar geleden |
Ian Piumarta
|
4ac12f91c5
|
Add symbols #O, #d, #v and Symbol.setop() primitive. Add primitive method Symbol.setopt(N) to set command-line option at runtime. Add primitive method Symbol.defined() to test if a variable name has been defined. Overload primitive "+" to concatenate strings. Add stack of namespaces, initialised to empty object. refvar() and getvar() search namespaces, from most to least recent, when looking for global variables. setvar() always defines globals in the most recent namespace regardless of any existing shadowed definitions. Make OBJ::NAME a synonym for OBJ.NAME except that OBJ::NAME() applies a function whereas OBJ.NAME() invokes method NAME on OBJ. Add primitive error() to print source location, error message, and backtrace.
|
1 jaar geleden |
Ian Piumarta
|
2761c99ce2
|
Object.dump() uses Object.allKeys() instead of Object.keys().
|
1 jaar geleden |
Ian Piumarta
|
31e6d2ff3d
|
Primitives have correct names. Primitive Object.keys() returns properties that do not begin with "__". Add method Object.allKeys() that returns properties that do not begin with "__". Add method Object.sorted() to sort indexable elements. Add function sorted() for String and Object. Relations do not consider strings and symbols to be comparable. Printing strings does not include quotation marks at indentation levels 0 and 1. Printing strings escapes control characters at indentation levels other than 0 and 1. Rename SetVar.expr to SetVar.value to be consistent with SetProp and SetArray. Add RefVar, RefProp, RefArray that compute address of assignable value. Add Binops for autoincrement and assignment operators. Any expression can be the subject of increment or assignment operator. Enforce lvalue for increment and assignment operators by semanic check, not in syntax. String literals can contain escaped quotation marks. Keyword:value pairs in parameter lists provide arbitray expressions as default parameter values. Evaluate and assign default parameters values in apply().
|
1 jaar geleden |
Ian Piumarta
|
ff3dda9f83
|
Include recent results as comments.
|
1 jaar geleden |
Ian Piumarta
|
956adf81e4
|
Define _GNU_SOURCE to expose qsort_r().
|
1 jaar geleden |
Ian Piumarta
|
9cc8c3e572
|
Top-level expressions use the value of symbol __globals__ as the base environment instead of nil. Fix off-by-1 error in nlrPush(). Object.keys() returns keys in alphabetical order.
|
1 jaar geleden |
Ian Piumarta
|
057733b85f
|
Binary operators store pointer to implementation to avoid operator selection during eval.
|
1 jaar geleden |
Ian Piumarta
|
2f164a3100
|
Use spaces instead of tabs to preserve visual alignment in broken tools.
|
1 jaar geleden |
Ian Piumarta
|
30facb810c
|
Add auto increment/decrement and assignment operators.
|
1 jaar geleden |
Ian Piumarta
|
4d570df59e
|
ForToFrom performs update step after continue.
|
1 jaar geleden |
Ian Piumarta
|
5ca296eb47
|
Add return, break, and continue.
|
1 jaar geleden |
Ian Piumarta
|
5b1ec1d738
|
Test user-defined AST nodes.
|
1 jaar geleden |
Ian Piumarta
|
6ba66daa8b
|
Test user-defined AST nodes.
|
1 jaar geleden |
Ian Piumarta
|
57fe021082
|
All symbols created with UNDEFINED_TYPECODE by default. AST nodes with undefined typecode are evaluated by invoking the method __eval__ on the node. Typecode is looked up in the immediate delegate of a node only. Object.__eval__() is primitive and returns self.
|
1 jaar geleden |
Ian Piumarta
|
82a4828985
|
Make sieve be local, not global.
|
1 jaar geleden |
Ian Piumarta
|
4a959a124f
|
Accessing an undefined variable causes a fatal error.
|
1 jaar geleden |
Ian Piumarta
|
ddff3e48e8
|
Add "let name = value, ... ;" to create local variables.
|
1 jaar geleden |
Ian Piumarta
|
a81312c139
|
Ignore more irrelevant stuff.
|
1 jaar geleden |
Ian Piumarta
|
4a3abfc8c1
|
Remove makeForm(). Use Closure.fixed property to change assert/refute closures into a special forms.
|
1 jaar geleden |
Ian Piumarta
|
3c992f4a13
|
Remove primitive makeForm (because Closure.fixed is now accessibe from userland).
|
1 jaar geleden |
Ian Piumarta
|
72753c6725
|
All fields of Lambda and Closure are accessible via Object_{get,put}.
|
1 jaar geleden |
Ian Piumarta
|
48f7707b56
|
Ignore irrelevant files.
|
1 jaar geleden |
Ian Piumarta
|
7d3350b71b
|
Run test on file, not on stdin.
|
1 jaar geleden |
Ian Piumarta
|
bc3aae1dcb
|
Block_eval() executes its body in a new environment
|
1 jaar geleden |
Ian Piumarta
|
ec29069aa4
|
import files
|
1 jaar geleden |
piumarta
|
b5521793cd
|
Initial commit
|
1 jaar geleden |