Goose  Timeline

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

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

2024-09-15
20:24
Add clang format settings, reformat everything check-in: 0db147f117 user: achavasse tags: cir-ssa-refactor
2024-04-09
22:55
Here we go again. Life is pain. Life is suffering check-in: 99c630bf0a user: zlodo tags: cir-ssa-refactor
2024-03-14
23:23
  • add type wrapper for unresolved compile time identifier, move undefined identifier handling to dropValue() of those
  • implemented dot operator for structs
  • fixed struct lazy parsing
  • implemented some tests for structs default construction
  • fixed struct default ctor generation
check-in: 75a719c020 user: zlodo tags: trunk
2023-12-26
15:41
Structs: add the Finalize extension point that finalizes the creation of a struct after gathering its content. check-in: f1458583b5 user: zlodo tags: trunk
2023-11-30
18:29
Handful of fixes and improvements from an abandoned refactor of inline funcs, will go for a different solution check-in: 5b069c9677 user: zlodo tags: trunk
2023-11-05
13:04
Implemented inline functions check-in: 96c02f37d1 user: zlodo tags: trunk
2023-09-21
18:08
  • Add a compilation state to func CIR to prepare for inline funcs
  • Add a job queue to defer some compilation jobs
  • Refactor LocationId to store an actual location for poison values to help with debugging
check-in: e24e9bfad5 user: zlodo tags: trunk
2023-08-13
18:23
forall statement: factorise out the bracket block parsing check-in: 890f3f7581 user: zlodo tags: trunk
18:04
It turns out cmake hadn't, in fact, failed me for the last time: migrating back from meson to cmake check-in: 9722f7aa3f user: zlodo tags: trunk
2023-08-02
21:46
Implemented forall statement check-in: 32f94cd2e1 user: zlodo tags: trunk
2023-03-05
22:24
  • removed fmtlib, now use std::format
  • vastly improved the overload resolution debugging tools
  • prelude: started adding some extra error detection for small things that don't need to be builtin
  • prelude: started working on implementing #for for tuples, some stuff needs to be addressed still
  • fixed some type checking issue with wrapped args
  • fixed superfluous nested lifetime scope in brace blocks (which caused redundant calls to some extension points)
check-in: 4d4d76607a user: zlodo tags: trunk
2023-01-05
19:44
Fixed passing tuple by value to functions, which involved properly handling type checking of constant tuples containing computed data and some codegen bugs check-in: 9b8306c3af user: zlodo tags: trunk
2022-11-17
00:46
expose more compiler functionality to g0api:
  • local variable declarations
  • lifetime scopes
check-in: 605ff0a654 user: zlodo tags: trunk
2022-09-02
21:42
  • Implemented a test for variadic functions
  • Fixed a million issues and missing things preventing the above from working
  • Implemented equality operators for types
check-in: 373a6ebd57 user: zlodo tags: trunk
2022-07-22
00:36
Switch back to using fmtlib so we can build with clang 14 for stability and since nowadays we apparently can't expect to be able to use c++ features that were accepted in the standard 2 years ago :/ check-in: 7e6d3483ec user: zlodo tags: trunk
2022-06-29
21:47
The CIR is no longer made out of instructions that are basically expression trees, but is now instead a stack language to make it possible to insert verification instructions before and after the evaluation of individual function arguments check-in: 1f87fbda15 user: zlodo tags: trunk
2022-06-21
17:26
Removed a bit of dead code check-in: b78a3ea203 user: zlodo tags: cir-stack-language
2022-06-18
18:51
  • Added a location id to all CIR instructions (needed with the stack based approach to locate intermediate results)
  • Fixed a bunch of verifier errors
  • Re-enabled most verifier tests, other than some requiring to re-implement a few more bits
check-in: b4d5bdf6ec user: zlodo tags: cir-stack-language
2022-05-25
17:28
  • Split function invocation code into several specialized versions for each function kind
  • Almost fully completed the migration of CIR to a stack language
  • Compilation-time execution works again
check-in: 7992dbe59f user: zlodo tags: cir-stack-language
2022-05-16
23:40
Temporarily disabled codegen, verification, and all the tests that can't work without these check-in: 5fc7b0623f user: zlodo tags: cir-stack-language
2022-03-15
22:54
Fix verification of loops that modify ghost func closures check-in: 6564792477 user: zlodo tags: trunk
2022-03-14
19:23
  • bracket blocks inlined in the code are no longer proposition lists but a new type of block to contain "ghost code" (ie a verification specific cfg)
  • added a GhostBranch instruction to insert the above in the middle of regular code
  • removed a bunch of hacks to ignore load/stores involving ghost funcs during execution and codegen since they are now separated from normal code using the above
  • miscellaneous other refactorings and improvements
  • as a result ghost code is now more flexible and can use idiomatic tuple assignments to exchange the values of two ghost function closures
check-in: 68260b65f2 user: zlodo tags: trunk
2022-02-18
17:36
  • refactored function parsing so that ghost function declarations can actually work (ie they don't expect a function body)
  • some fixes in codegen to properly ignore statements involving ghost functions
check-in: 07963466bf user: zlodo tags: trunk
2022-01-29
13:12
ghost functions parsing: ignore following brace block if any, since they don't have bodies check-in: b60fb08f17 user: zlodo tags: trunk
2022-01-28
17:41
Ghost functions:
  • implemented "ghost" operator to mark a function or template function as ghost
  • template functions can now be ghosts
  • detect and reject mixing ghost and non ghost functions in the same overload set
check-in: 26c724e318 user: zlodo tags: trunk
2022-01-07
20:02
  • Use non-experimental std::coroutine
  • Get rid of fmt lib, use std::format instead
check-in: 3b954688f3 user: zlodo tags: trunk
2021-11-26
22:42
  • Fixed adding predicates to a type alias created with using that modified the original type
  • Fixed ambiguous parsing of using expressions that were mistook for overload redefinitions in some cases
check-in: 35ff2a536e user: zlodo tags: trunk
00:37
  • Parser: if an infix rules fails to parse, backtrack
  • Parser: it is now possible to define a contextual "default lhs value"
  • Parser: if an infix operator fails parsing, it is retried as an infix operator, using the default lhs value if there is one available
  • Type predicates: setup @val as the default lhs value inside of the proposition list context, so it is now possible to write u32[<10] instead of u32[@val<10]
check-in: 0184a27429 user: zlodo tags: trunk
2021-11-25
21:21
Got rid of the where operator. Predicates are now added to types simply by following the type with a proposition list. check-in: 23ecb4f9cb user: zlodo tags: trunk
20:30
  • simplified ref parsing implementation by using the parser's infix parsing rule helper
  • refactored "requires" and "ensures": they are now simply infix operators that take a function type on the lhs and a proposition list on the rhs
check-in: e1ede8dafa user: zlodo tags: trunk
2021-11-23
19:45
  • Parser: when encountering a prefix bracket block, parse it into a propositions list.
  • Builtins: when a proposition list is dropped (ie used as a stand alone statement), convert it into assert instructions.
  • Builtins: remove the builtin assert function, now replaced with the above so that propositions are always enclosed in brackets, regardless of where they are used. Also removes the confusion of making the assert function a compile-time check when its traditionally a runtime check
check-in: 2ba2e560b1 user: zlodo tags: trunk
2021-11-22
20:33
Parser: split block parsing code check-in: a4eaf901ef user: zlodo tags: trunk
2021-11-16
21:18
The details of creating a new visibility scope are now handled by the builder instead of being hardcoded in the parser check-in: 16dd587889 user: zlodo tags: trunk
2021-11-13
14:09
The builder is now passed as the first param of the _DropValue extension point check-in: c33b227735 user: zlodo tags: trunk
2021-11-11
20:05
Refactored the code builder: it is now carried around as a Value, and accessed through a bunch of extension points, so we can have different builders (and even user defined ones) later to make classes etc. check-in: 1ad61a2717 user: zlodo tags: trunk
2021-10-31
18:52
  • Reverted most of the horribly complicated changes done since [b3ff9af3c2fe4925], other than the ability to hash all terms, values, instructions and predicates
  • Solved the problem for which tests were added in [b3ff9af3c2fe4925] in a much simpler way
check-in: 1fe5a1ac2b user: zlodo tags: trunk
2021-10-27
22:23
Func: CompileFunc() doesn't perform function verification anymore, there's now a separate CompileAndVerifyFunc() for that check-in: 562bf11329 user: zlodo tags: trunk
20:55
Parser: when building a function, if its parent identity depends on type predicates captured by template vars, build it as a template function instead. check-in: 45078c42df user: zlodo tags: trunk
2021-10-26
18:43
Type predicates: implemented helper functions to append / filter out type predicate hashes in identities. check-in: d40e6470bf user: zlodo tags: trunk
2021-09-28
17:59
Fix functions and template functions not getting compiled with visibility over their original enclosing scope, but over the current scope at the point of invocation instead check-in: 39c8a653da user: achavasse tags: trunk
2021-09-26
19:47
  • Fixed a handful of parsing issues related to templates
  • Added missing export of "ref" to g1
check-in: 93eaca4c2b user: achavasse tags: trunk
2021-09-20
23:23
Integrated the Tracy profiling client and added some profiling instrumentation check-in: b846dfa2fb user: achavasse tags: trunk
2021-09-18
17:00
  • Refactored LocationId into a separate class and actually use it everywhere instead of uint32_t, this makes it easier to make generic wrappers for APIs
  • g0 api: more work on the CIR api
check-in: bf81e30984 user: achavasse tags: trunk
2021-09-15
21:24
  • VecOfLength() will now match vectors of compatible length, taking repetition terms into account
  • Vector unification and typechecking rules now handle vectors of variable lengths
check-in: a4f1ada98c user: achavasse tags: trunk
2021-09-13
21:52
  • Implemented a generic wrapper for the simple native types that can be embedded in Terms
  • Added more specific overloads for the assignment operator that should work only on builtin types, so that library and user defined types will be able to choose whether they're copyable
  • The EIR representation for all builtin runtime types are now prefixed with "rt_type" to more easily write generic matching rules against them
  • EIR: Fixed long standing bugs in Enumerate and Decompose that surfaced because of the above
  • Miscellaneous code cleaning
check-in: 51f288ba2a user: achavasse tags: trunk
2021-09-12
16:48
  • Started work on extensibility api
  • some code cleanup
check-in: 55beba911a user: achavasse tags: trunk
2021-09-11
15:05
  • template functions can now be intrinsic
  • implemented the "intrinsic" operator to create intrinsic functions
  • some code cleanup
check-in: ba2f4e9f95 user: achavasse tags: trunk
2021-09-10
00:02
Parser: when parsing a function overload, instead of directly adding it to the overload set, push an "Overload" value that performs the addition in DropValue(). This will allow operators to modify overloads before they are added to an overload set. check-in: 5f4eeaef12 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-17
00:41
  • Added a Conversion step after typechecking, to take care of conversions that aren't practical to do during typechecking itself.
  • Added back a proper ct_int to rt_int conversion step that diagnoses out of range integer constants
check-in: b48e7b7507 user: achavasse tags: trunk