Goose  Timeline

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

25 check-ins using file bs/compiler.cpp version 8dd1313377

2019-09-21
21:43
  • Implemented the 'requires' and 'ensures' verification statements.
  • Verification statements are lazily parsed even for non template functions, so that they can see functions defined out of order, just like in function bodies.
check-in: 2e993951e6 user: achavasse tags: trunk
2019-09-18
22:41
When instancing template functions, parse their verification statements. check-in: a9930c3c49 user: achavasse tags: trunk
2019-09-17
22:34
parser: fill in the unparsed verification statements in tfunctype. check-in: 035c904764 user: achavasse tags: trunk
20:08
  • parser: add an utility function to retrieve a sub expression in its unparsed form.
  • tfunc type: store a pointer to a vector of unparsed tokens for the verification statements.
check-in: 0c3c9488af 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-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