Goose  Timeline

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

43 check-ins using file bs/builtins/types/template/build.cpp version 68b6e76598

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-09-15
22:23
  • Added the "Verification" domain and domain specifier.
  • Parser: now parses a verification sub expression in function types, located after the domain specifier.
check-in: dc72d5dc8c user: achavasse tags: trunk
2019-09-09
16:38
Func types now store a pre assertion expression and a post assertion expression. check-in: 7c69a33283 user: achavasse tags: trunk
16:00
llr: added the assert verification instruction. check-in: 3e6bd22335 user: achavasse tags: trunk
2019-09-07
17:10
ir: got rid of the code to merge and to match two tries, which isn't used and is unlikely to be needed at this point. check-in: e9ee5d4728 user: achavasse tags: trunk
16:53
ir: rewrote the super inefficient "term versus trie" matching function. This speeds up everything significantly: compiling the mandelbrot sample is no longer embarrassingly slower than compiling an equivalent c++ version with clang. check-in: 0db33d7cb4 user: achavasse tags: trunk
2019-08-31
14:57
  • Unification: anonymous holes are substituted with their content right away, since otherwise they don't get substituted before the second pass.
  • When a tuple of types is used as a param type, it is converted to a tuple type.
  • Fix comma operator not correctly handling prepending a value to an open tuple.
  • Added tests for various tuple based features.
check-in: 1099848ccd user: achavasse tags: trunk
2019-08-30
01:07
The tuple assignment and compound assignment operators now first collect the results into temporary variables, and then perform the assignments. This allows things such as a,b = b,a to work. check-in: 982d26433b user: achavasse tags: trunk
2019-08-29
20:50
Implemented an unification rule for tuples. It is now possible to put multiple variable declarations in a tuple and initialize them using another tuple. check-in: aee9a8fb25 user: achavasse tags: trunk
20:12
Params are now encoded distinctly from normal values, to allow for more generic unification rules for things suchs as BigInt versus Integer. check-in: 6e598fe891 user: achavasse tags: trunk
2019-08-28
00:01
  • Made it possible to store non-resolved local variables in tuples.
  • Implemented DestroyValue and DropValue for tuples.
  • Implemented most operators for tuples.
check-in: adf946f1f5 user: achavasse tags: trunk
2019-08-27
21:40
Extended the comma operator to be able to handle the concatenation of, and prepending values to open tuples. check-in: 537ae5ab51 user: achavasse tags: trunk
21:10
When parsing a decl that immediately precedes a paren block (ie a function decl), use a lower precedence than the comma operator, to allow a non-parenthesized tuple to be used as the return type. check-in: 0052ff08b3 user: achavasse tags: trunk
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-26
00:18
Implemented local variable destruction (through the DestroyValue() extension point), and setup proper visibility and lifetime rules for variables declared inside of statements. check-in: c2b2425c0c user: achavasse tags: trunk
2019-08-25
02:15
Small cleanups and re-enable llvm optimizations when compiling. check-in: dc199732f8 user: achavasse tags: trunk
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
22:05
Added a sample program that renders an ascii art mandelbrot. check-in: 05234fc5f0 user: achavasse tags: trunk
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
12:58
Removed unnecessary sema tests dependencies. check-in: 64fbc04864 user: achavasse tags: trunk
12:04
Vscode syntax highlighter tweak. check-in: 9969a33d0a 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-22
13:23
You have failed me for the last time, CMake. check-in: e38aee1ca0 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
23:48
Removed an irrelevant comment. check-in: d2c3ec7961 user: achavasse tags: trunk
23:42
  • Fixed broken canBeExecuted() and canBeEagerlyEvaluated() computation of CFGs.
  • Added some error messages when a function with compile-time only types contains calls to runtime functions. (to be improved and detected during parsing rather than codegen but serviceable for now)
check-in: d5bc4daeca user: achavasse tags: trunk
20:00
Improved error messages. check-in: 25f4d2946d user: achavasse tags: trunk
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
02:09
  • Implemented the ct_char type.
  • Implemented character literals.
  • Replaced the ridiculous hash based stringid implementation to just use string interning instead, which is something I remembered exists (duh)
check-in: 932f41fd6a user: achavasse tags: trunk
2019-08-19
19:25
  • Factored escape sequence parsing out and made hex and octal literal also output correct UTF-8 sequences when used in strings.
  • Fixed lexer errors never being displayed if they happen during the compile-time execution attempt, during which diagnostics are silenced.
check-in: 6c118e666d user: achavasse tags: trunk
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
15:35
llr: added the break and continue terminators. check-in: b16e7c5933 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
20:46
Implemented compound assignment operators. check-in: 35a5fd236f user: achavasse tags: trunk
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-16
23:52
Simplified ir::Vector, use plain std::vector to store the terms. immer::vector was pointless for that since we pretty much never actually take advantage of them being CoW in this case. check-in: f2ca82dfce user: achavasse tags: trunk