Empathy  Timeline

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

50 most recent check-ins

2019-08-22
13:23
[e38aee1ca0] Leaf: You have failed me for the last time, CMake. (user: achavasse tags: trunk)
2019-08-21
13:38
[20d317a921]
  • 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.
(user: achavasse tags: trunk)
2019-08-20
23:48
[d2c3ec7961] Removed an irrelevant comment. (user: achavasse tags: trunk)
23:42
[d5bc4daeca]
  • 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)
(user: achavasse tags: trunk)
20:00
[25f4d2946d] Improved error messages. (user: achavasse tags: trunk)
16:15
[c20ed5f1d3]
  • 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.
(user: achavasse tags: trunk)
02:09
[932f41fd6a]
  • 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)
(user: achavasse tags: trunk)
2019-08-19
19:25
[6c118e666d]
  • 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.
(user: achavasse tags: trunk)
13:43
[baf9721752]
  • Fixed many issues with compile time versus run time function invocations.
  • Improved some error messages.
(user: achavasse tags: trunk)
2019-08-18
20:54
[bd4456308c]
  • Added a function to adjust the compile time execution budget.
  • lexer: Implemented escape sequences in string literals.
(user: achavasse tags: trunk)
18:52
[a504aedf6c]
  • 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.
(user: achavasse tags: trunk)
15:35
[b16e7c5933] llr: added the break and continue terminators. (user: achavasse tags: trunk)
14:51
[9d81e31cfe]
  • 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.
(user: achavasse tags: trunk)
00:54
[459ee84d6b]
  • Implemented the while statement.
  • Fixed a lexer issue that generated invalid locations at the very end of files.
(user: achavasse tags: trunk)
2019-08-17
20:46
[35a5fd236f] Implemented compound assignment operators. (user: achavasse tags: trunk)
14:49
[48a020a1fa]
  • 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.
(user: achavasse tags: trunk)
2019-08-16
23:52
[f2ca82dfce] 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. (user: achavasse tags: trunk)
20:33
[5a361c8b86] Implemented variable declarations with local type inference. (user: achavasse tags: trunk)
14:48
[27fc719d74] Added a new type of template expression: TVec, along with a helper function to make it possible for parametric types to be constructed either normally or as a template expression when passed template parameters. Only used by LocalVar for now, parametric runtime types require some refactoring. (user: achavasse tags: trunk)
2019-08-15
22:58
[6d69e387ac] Implemented InitializeLocalVar() for the bool, ct_int and ct_string types. (user: achavasse tags: trunk)
22:37
[3d8b581261]
  • Fixed some bugs related to dropping values.
  • Implemented local variable declarations with default initialization.
  • codegen: Fixed allocas not properly grouped up at the start of the first basic block of functions.
(user: achavasse tags: trunk)
01:54
[1e6e7c928d] Fixed a couple of typos. (user: achavasse tags: trunk)
01:27
[75bcd81044]
  • Implemented the DropValue() extension point, called when a previously pushed value is dropped without being used.
  • ir, sema: the complexity of an ir expression is now directly counted by ir::Vector, so that we don't have to deal with it in every unification rule (and it was missing from most of them, which caused incorrect overload resolutions in some cases).
(user: achavasse tags: trunk)
2019-08-14
15:21
[ffbb9276bb] Implemented the "InitializeLocalVar" extension point, with a builtin overload for integers. (user: achavasse tags: trunk)
02:35
[5a4946c300] Fixed a misnamed test. (user: achavasse tags: trunk)
02:30
[980effe072]
  • 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.
(user: achavasse tags: trunk)
00:04
[7e4e9d28d2] Reorganized tests. The current set of tests have been moved to a "noprelude" subdirectory. (user: achavasse tags: trunk)
2019-08-13
23:27
[0288a69883] cleanup: got rid of more optional< Value >. (user: achavasse tags: trunk)
22:43
[1feb20f522] Cleanup: got rid of optional< Value > in a lot of places that ought to always return a poison value if an error happens. (user: achavasse tags: trunk)
21:21
[ec58d0ff48]
  • Completed the diagnostics renderer.
  • Fixed a few places where value poisoning wasn't correctly propagated.
(user: achavasse tags: trunk)
14:12
[904cb2d062] First, incomplete draft of the diagnostics renderer. (user: achavasse tags: trunk)
12:14
[17905bf47a] diagnostics: simplify the code a bit by merging the LocationManager as static methods in Location. (user: achavasse tags: trunk)
00:42
[59ecc02baa] Diagnostics: use value poisoning to (hopefully) fix most cases of superfluous cascading error messages. (user: achavasse tags: trunk)
2019-08-12
20:15
[972c1d8b47]
  • 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.
(user: achavasse tags: trunk)
16:07
[b48fe61a11] Added local vscode workspace settings to link cmake-tools and cpp tools. (user: achavasse tags: trunk)
2019-08-11
18:59
[4a121b956a] Converted all the remaining error messages to use the diagnostics manager. (user: achavasse tags: trunk)
17:18
[b8548d8b24]
  • 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.
(user: achavasse tags: trunk)
13:36
[157221e014] Ported more error messages to the DiagnosticsManager. (user: achavasse tags: trunk)
01:26
[2efa23555d]
  • ir: created a new type for LocationId which is handled in a specific way so that two LocationIds are always considered equal by pattern matching. This prevent the values' locationIds stored in ir expressions from fucking up everything.
  • propagate value locations in a few places: in the parser, when resolving invocations and when doing eager evaluation. There are probably a lot of other places still missing.
  • converted all the builtin statements to use the DiagnosticsManager.
(user: achavasse tags: trunk)
2019-08-10
20:15
[e7fce87609] parser: custom parsing rules are now passed the location id of the value that resolved to them. (user: achavasse tags: trunk)
19:33
[ffa2c830dd] Implemented a DiagnosticsContext class which can be used to push contextual informations that are printed when an error is emitted. (user: achavasse tags: trunk)
17:50
[bd2fd03a33] lexer: generate token locations. (user: achavasse tags: trunk)
17:01
[2eb6c1fa43] Implemented the very first draft of the DiagnosticsManager and converted the using statement to use it. (user: achavasse tags: trunk)
14:26
[c4abb2a3ed] Refactored the lexer (and the resolver) to output Terms associated with location Ids. (user: achavasse tags: trunk)
12:56
[179de91f52] diagnostics: implemented the new location class, and the location manager. (user: achavasse tags: trunk)
2019-08-09
20:45
[1a6405a1c7] Added a location id and poison state to ir::Value. (user: achavasse tags: trunk)
19:54
[aee388d9c0] Cleanup: got rid of the half-assed location and poisoning systems in ir::Terms. (user: achavasse tags: trunk)
2019-08-08
23:24
[3a2f2c23ab] Implemented the assignation operator. (user: achavasse tags: trunk)
16:53
[c9a44e2fb9]
  • Implemented the local variable unification rule, which allows to read them.
  • Fixed comparison operators not returning bools.
(user: achavasse tags: trunk)
14:29
[90ab7b489f] Implemented the assignment operator of an expression to a decl of the same type, which declares and initialize a local variable. (user: achavasse tags: trunk)