Goose  Timeline

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

50 most recent check-ins that include changes to files matching 'bs/builtins/api/*'

2021-09-12
12:34
Split out the compile time api function out of builtins and into their own library check-in: b397dc5a7c user: achavasse tags: trunk
2021-09-11
23:40
Builtins: api: added an object to wrap a term reference check-in: 5a2d5b8a8b user: achavasse tags: trunk
2021-08-31
23:10
  • Added extension points to transform parameter types and function arguments
  • Fixed the incorrect type predicate type checking rule which should just preserve the argument's predicates as is
  • Fixed verification of return intructions that were checking the returned value's predicates, instead of the return type predicates (which happened to work anyway until the above fix)
check-in: 4b842721d2 user: achavasse tags: trunk
2021-03-02
22:51
Removed magic "tuple of types to tuple type" conversions and moved them into extension points so that any type can implement similar semantics check-in: 2370e98869 user: achavasse tags: trunk
2021-02-25
12:10
Implemented a new method to order function overloads. Enabled several new reference tests which are now working properly. check-in: 52ea24b083 user: achavasse tags: trunk
2021-02-21
17:15
Improved the #DumpValue debugging intrinsic check-in: cb0fd19317 user: achavasse tags: trunk
2021-01-11
20:20
Reorganized symbols visibility a bit to avoid local variables from the enclosing function to be visible inside of function parameter list declarations (which prevented reusing them as parameter names). check-in: 52280a3c5c user: achavasse tags: trunk
2021-01-02
18:00
Some more renaming. check-in: 0345b9f807 user: achavasse tags: trunk
2020-12-27
14:40
Renamed "ir" to "eir" (expression intermediate representation) and "llr" to "cir" (code intermediate representation) for clarity. check-in: 7d2def7b75 user: achavasse tags: trunk
2020-06-26
23:34
Cleanup:
  • Removed the poorly thought out "domain" system that was intended to allow for different implementations of functions for runtime and for compilation time, which was adding an absurd amount of crap everywhere and should be unnecessary with the current planned approach for implementing data structures.
  • The using statement doesn't do lazy parsing anymore. Lazy parsing is better left to specific constructs that require them (such as function bodies and later on class/structs). This removes the only case of significant newline character in the language.
check-in: 568c366a36 user: achavasse tags: trunk
2020-06-13
12:51
Modify the reference IR representation so that we can have holes for the behavior. check-in: 385846b609 user: achavasse tags: trunk
2020-05-25
22:08
  • Added a "LowerConstantForRuntime" extension point, similar to LowerTypeForRunTime.
  • Added a way to represent Record constants.
  • Implemented LowerConstantForRunTime for tuples, which lowers them into a constant record.
  • Implemented codegen for constant records.
  • Implemented codegen for storing an aggregate constant.
  • Implemented a way (not exposed in the syntax for now) to create vararg function types, to be able to call vararg external functions such as printf.
  • Enabled the tuple runtime/compilation combined test which is now working.
  • Various bug fixes.
check-in: bb17e9f3dd user: achavasse tags: trunk
2020-05-17
17:30
  • Clean up the "default return value from top level file functions" stuff.
  • Standardize to a default return value of 0 for the top level file both in execution mode and in compilation mode.
  • Implemented a combined execution/compilation test for tuples in preparation for implementing tuple compilation. (not enabled yet)
check-in: 397f594186 user: achavasse tags: trunk
2020-04-11
23:33
Updated to the latest git version of llvm. check-in: d38aab5fc2 user: achavasse tags: trunk
2020-02-17
23:15
Register temporary values returned from function calls for destruction, so that DestroyValue() is invoked on them. check-in: a0ee0dfc2e user: achavasse tags: trunk
2020-01-12
21:10
builtins: added wrapper types to allow terms and values to be manipulated at low level within the language itself. check-in: ceb0b190d6 user: achavasse tags: trunk
20:03
builtins: added a wrapper for a CodeBuilder pointer. check-in: d4e5c46e57 user: achavasse tags: trunk
2020-01-11
18:28
  • Moved the cfg and lifetime management stuff into a CodeBuilder object owned by sema::Context. This is in preparation to allow alternative implementations of the builder, for instance to build classes.
  • Pass the context to intrinsic functions, which removes their dependency to the parser the need for the ugly "GetCurrentParser" static function.
check-in: b3aeaae2df user: achavasse tags: trunk
2019-12-11
15:38
  • Compile-time execution: don't attempt to perform a compile time evaluation of every invocation. Instead, wait until a type is being used by a decl to try and evaluate it.
  • Diagnostics: simplify accordingly (no need for the mode that silences all errors during attempted comptime evaluation)
  • Added some verification conditions to the mandelbrot sample, and created a broken variant as a verification diagnostics test.
check-in: b702561850 user: achavasse tags: trunk
2019-12-05
17:40
Implemented a helper to check whether a type is compile-time only. check-in: 12f37d77cb user: achavasse tags: trunk
2019-11-18
01:40
Verifier: first seemingly working version of the k-induction loop checker. check-in: 477ef5b3d4 user: achavasse tags: trunk
2019-10-15
00:04
llr: implemented a helper function to compute dominators. check-in: cfc94e192c user: achavasse tags: trunk
2019-10-09
19:21
Some renaming for consistency and to match commonly used names for those things. check-in: 5e72e8e08c user: achavasse tags: trunk
2019-10-05
16:37
  • Renamed the "assert" test helper function to "check".
  • Implemented a builtin "assert" intrinsic that emits an Assert instruction for the verifier.
  • Implemented a couple of tests to verify the generated z3 expressions for a couple of simple functions.
  • Fixed a few issues when building the z3 expressions.
check-in: 3740e7a491 user: achavasse tags: trunk
14:50
verification: implemented a trace mode that only dumps the z3 expressions. check-in: 0b95fe304a user: achavasse tags: trunk
2019-09-29
22:30
  • Fixed some issues with implicit termination of void functions.
  • llr: give an index to each basic block, and keep track of back links towards previous blocks.
check-in: 4ae6912760 user: achavasse tags: trunk
2019-09-22
14:37
Project renaming. check-in: af650a9e95 user: achavasse tags: trunk
2019-09-16
21:38
  • func: created an identity for the verification expressions.
  • func: created bindings for the function parameters inside of the verification expressions identity.
check-in: 8abb611e48 user: achavasse tags: trunk
2019-08-27
20:27
Tuples containing only types or other tuples of types are now considered types. check-in: 533d2ce579 user: achavasse tags: trunk
19:46
Live values are now identified by an unique id to avoid using a fragile, non future proof way to extend the lifetime of local variables beyond their containing statements. check-in: 39cabb3447 user: achavasse tags: trunk
2019-08-25
01:54
  • Got rid of the LoadConstInt instruction and directly handle integer constants in codegen. The old system didn't work for compile-time evaluated runtime integers.
  • Added missing implementations for unsigned comparison, that were somehow forgotten.
  • Implemented the nullptr constant.
  • Made a test version of the mandelbrot sample that gets both compiled and interpreted and whose results are compared with the same reference file, as a sanity test that interpreted and compiled code behave identically.
check-in: 9a68159d52 user: achavasse tags: trunk
2019-08-24
20:41
Make cast() eagerly evaluated once again, it was removed by mistake. check-in: 7fa6ff1937 user: achavasse tags: trunk
19:33
More cleanup around which builtin functions should be intrinsics/eager/non eager. check-in: fece958df9 user: achavasse tags: trunk
16:54
  • ExecuteFile is now a regular builtin function.
  • Added #Include, which works the same as the old ExecuteFile.
  • Added a CreateConstant() builtin func.
  • Used the above to cleanup the command line parsing code in empathy.em.
check-in: f1cab5f761 user: achavasse tags: trunk
13:42
Factored out the common code of Compiler::execute(), ExecuteFile() and #CompileFileToFunction(). check-in: 0c5641877d user: achavasse tags: trunk
2019-08-23
20:18
  • Added a default InitializeVar() overload allowing any builtin type to be stored in a local variable during compile time.
  • Remplaced a lot of hackish uses of using with local variables, now that they work.
  • Changed several eager-evaluated bultin function to normal builtin functions, thanks to the above cleanup.
  • Eager-evaluated builtin functions are all now prefixed with a # symbol to indicate their "compiler directive" nature and make it clearer that they are evaluated during the translation phase of the program, rather than its execution (even compile time execution).
  • A few build and testing scripts fixes.
check-in: 133303cbbf user: achavasse tags: trunk
2019-08-21
13:38
  • Automatically compile the samples during the build.
  • Added a --forcecolors to the front-end, since it can't detect whether colors are allowed when launched by Ninja.
  • while: if the condition evaluates to constant true and there is no break statement in the body, use a different code generation strategy to avoid generating a continuation block which makes a return statement mandatory after the loop even though it's unreachable.
check-in: 20d317a921 user: achavasse tags: trunk
2019-08-20
16:15
  • Fixed error messages when compiling a file through the real frontend (this was broken again because this is a day ending in y)
  • Implemented initialization, assigment, and equality comparison for ct_char.
  • Implemented the cast builtin function. Its only overload currently allows to cast a ct_char into a ct_int.
  • Implemented the PrintAsciiChar builtin function to write a single ascii character.
check-in: c20ed5f1d3 user: achavasse tags: trunk
2019-08-19
13:43
  • Fixed many issues with compile time versus run time function invocations.
  • Improved some error messages.
check-in: baf9721752 user: achavasse tags: trunk
2019-08-18
20:54
  • Added a function to adjust the compile time execution budget.
  • lexer: Implemented escape sequences in string literals.
check-in: bd4456308c user: achavasse tags: trunk
18:52
  • Implemented the break and the continue statements.
  • Fixed cfg generation issues with nested control statements.
  • Fixed unreachable code error messages not emitted in some cases.
check-in: a504aedf6c user: achavasse tags: trunk
14:51
  • Fixed speculative compile-time execution causing compilation failures.
  • Fixed compile time execution budget underflowing, leading to the compiler going into an infinte loop while compiling an infinite loop (erm...)
  • Fixed more cases of missing propagation of poison states leading to spurious error messages.
check-in: 9d81e31cfe user: achavasse tags: trunk
00:54
  • Implemented the while statement.
  • Fixed a lexer issue that generated invalid locations at the very end of files.
check-in: 459ee84d6b user: achavasse tags: trunk
2019-08-17
14:49
  • Intrinsics automatically set their domain depending on the domain restrictions of the builtin types that they use.
  • Declaring a local variable of a compile-time only type is now properly rejected during codegen.
  • Improved error messages for operators and extension point invocations.
check-in: 48a020a1fa user: achavasse tags: trunk
2019-08-14
02:30
  • Added an unification rule to deal with LocationIds. It honors poisoning and preserve the most recent location from the input values.
  • Added a diagnostic context indicating the point at which a template function passed as a value has been instantiated.
  • Added a trace mode that logs the diagnostics contexts, which can be activated by calling a compile time function.
  • Added a few diagnostic messages tests.
check-in: 980effe072 user: achavasse tags: trunk
2019-08-13
22:43
Cleanup: got rid of optional< Value > in a lot of places that ought to always return a poison value if an error happens. check-in: 1feb20f522 user: achavasse tags: trunk
21:21
  • Completed the diagnostics renderer.
  • Fixed a few places where value poisoning wasn't correctly propagated.
check-in: ec58d0ff48 user: achavasse tags: trunk
00:42
Diagnostics: use value poisoning to (hopefully) fix most cases of superfluous cascading error messages. check-in: 59ecc02baa user: achavasse tags: trunk
2019-08-12
20:15
  • Implemented a system to temporarily silence error outputs.
  • Syntax errors now silence further errors encountered while parsing the same block and nested children blocks.
  • All errors are also silenced while speculatively attempting to evaluate invocations at compilation time.
check-in: 972c1d8b47 user: achavasse tags: trunk
2019-08-11
17:18
  • Converted more error messages to the new system.
  • Propagated value locations in some missing places.
  • Added the location of template function calls as diagnostics context.
check-in: b8548d8b24 user: achavasse tags: trunk