Goose  Timeline

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

72 check-ins using file bs/builtins/types/runtime/typecheck.cpp version 503d887f14

2021-11-11
01:00
  • refactored the ref syntax again: "ref" is now an infix operator that takes an "AccessLevel" compile time value (mut/const/temp) on the lhs, or a TVar to capture/constrain it
  • used the above feature to fix the constref verification _ConvertArg overload which was silently dereferencing the arg, causing it to get converted to a temp ref in all cases
check-in: d679acf746 user: zlodo tags: trunk
2021-11-05
12:56
Fixed non mutable reference passing verification. It was a completely stupid error entirely in the prelude. I'm already fucking up using my own language, this bode well check-in: 0c58009de2 user: zlodo tags: trunk
2021-11-03
22:55
  • References: ref now creates a template type accepting any kind of reference, and mut/const/temp are prefix operators turning that into a ref (or template ref) type of the corresponding kind (this also changes the syntax from ref mut XXX to mut ref XXX which is more natural)
  • Fixed the bizarely broken implicit referencing typechecking rule that performed a superfluous intermediate TypeCheck that crashed on non mutable template reference types
  • Fixed builtin function wrapper that omitted a cast of the return value to the specified type, which allowed builtin functions to silently return values of a different type than advertised, resulting in fun type checking errors
  • Fixed a bunch of fucked up return types that worked by chance (because of the above) in several g0 api functions
  • Implemented non mutable reference passing verification + related tests (it doesn't work yet but too many fixes need to be committed first)
check-in: 55994a469a user: zlodo tags: trunk
2021-11-01
11:16
Verifier: fixed verification taking a billion years in some cases check-in: ec2b1e3b74 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-30
22:51
  • Fixed type predicate hashing
  • Template: create a monomorphization specific identity for verification (as opposed to the instance specific identity in which we ignore predicate hashes)
check-in: a681efadd9 user: zlodo tags: trunk
2021-10-29
20:03
Template rules: implemented a function to setup bindings for captured predicates check-in: eccb9be7b9 user: zlodo tags: trunk
2021-10-28
21:48
Template rules: implemented a function to extract the type predicate hashes of captured types check-in: 8fe613b1ac user: zlodo tags: trunk
20:25
Template: split template function verification from instantiation check-in: 84723188cd 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-10-25
19:34
Type predicates: store the expressions as an array of values, which avoids unecessary conversions and results in the inclusion of the CIR from the expressions in the hash check-in: 996d8d9686 user: zlodo tags: trunk
2021-10-24
20:22
Implemented CIR instruction hashing check-in: f5cd8d2642 user: zlodo tags: trunk
2021-10-23
19:40
Small code cleanup, moved some code to .cpp that didn't need to be in the header check-in: ef3548db6c user: zlodo tags: trunk
16:34
Implemented hashing of EIR terms check-in: ec41139b5a user: zlodo tags: trunk
2021-10-09
22:07
Prelude: use the Conjunction instruction to build the reference predicate equivalence check check-in: 233221b915 user: zlodo tags: trunk
21:50
Added the Conjunction CIR instruction to build a conjunction from predicates at verification time check-in: e3485faf08 user: zlodo tags: trunk
20:12
Predicates: add the possibility to store named sets of predicates in types, to be retrieved from a dictionary at verification time check-in: 459f60ca3a user: zlodo tags: trunk
15:52
  • Fixed a couple of verification bugs and added related tests
  • Added some tests for currently broken verification scenarios involving template functions
check-in: b3ff9af3c2 user: zlodo tags: trunk
2021-10-08
17:06
Linux build fix check-in: e386f21089 user: zlodo tags: trunk
2021-10-07
22:37
Added tests for mutref predicates equivalence checking check-in: 50c3984309 user: zlodo tags: trunk
2021-10-06
21:50
Mut ref predicates verification: display a useful error message check-in: 05ada78145 user: zlodo tags: trunk
14:13
Diagnostics: when registering a custom diagnostic message, save the context stack along with it check-in: 18734ccbef user: zlodo tags: trunk
2021-10-04
16:13
Fixed build issues with Tracy on mac and updated it to the last version check-in: f408a2e123 user: zlodo tags: trunk
12:06
Cleanup check-in: b974d30199 user: zlodo tags: trunk
11:57
  • Fixed assignment of tuples whose content is not known at compile time
  • templates: fixed forwarding TVars not retrieving their bound value
  • g0 api: fixed type predicates retrieval
  • Prelude: implemented a first rough version of predicate type checking when passing mutable references to functions
check-in: 2de6fd1212 user: zlodo tags: trunk
2021-10-01
19:20
  • improved diagnostics for ambiguous typechecking rules
  • fixed quote type checking rules
  • fixed linux target compilation
check-in: a31d09af08 user: zlodo tags: trunk
2021-09-30
23:37
Fixed a couple of bugs, but the linux version is broken for now (due to language bugs that can't be worked around and need to be fixed) check-in: 24415e41e4 user: zlodo tags: trunk
22:07
Correctly generate and link executables on darwin check-in: 5f6197d1a0 user: zlodo tags: trunk
19:14
Added a builtin g0 variable that exposes the name of the target OS, just to be able to quickly hack around some rudimentary mac support check-in: ec5428614c user: zlodo tags: trunk
2021-09-29
22:59
Fixes for wsl build check-in: 886e9f72c4 user: zlodo tags: trunk
22:07
  • fix stringid static members
  • fix build and crashes on mac
check-in: 2f7a76dded 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
23:25
Fixed template bugs with parametric types check-in: 097569fdd6 user: achavasse tags: trunk
21:11
TDecl: instead of directly storing the type signature (and forgetting all about the nested TExprs), we store the TExpr and generate the signature during typechecking check-in: 00408e8723 user: achavasse tags: trunk
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
17:00
g0 api: added a function to retrieve the CFG from a code builder check-in: e1194caa9e user: achavasse tags: trunk
16:16
g0 api: removed the old codegen module wrapper, use TypeWrapper instead check-in: ded246dccd user: achavasse tags: trunk
14:17
Intrinsics: expose the current code builder as an implicit parameter check-in: 60a2f901d5 user: achavasse tags: trunk
13:03
Integrated mimalloc check-in: 8398bd36c2 user: achavasse tags: trunk
12:00
  • Fixed TypeType's representation. Declaring a type, non-template parameter (for compile time functions) now works
  • Removed the trie comparison algorithm from eir that was never used
  • Misc code cleanup
check-in: 21f907a13f user: achavasse tags: trunk
2021-09-25
15:53
eir: implemented OrPattern term check-in: 6b3eee40c4 user: achavasse tags: trunk
2021-09-24
19:11
Overload resolution: cache which overload was selected for a given argument tuple check-in: 7bb051b826 user: achavasse tags: trunk
2021-09-23
21:42
Got rid of trie versus trie matching, again. The clown show goes on check-in: ad0b20f57d user: achavasse tags: trunk
2021-09-22
20:25
Removed the gross use of std::any from the type checking trie, also fixed some horribly wrong type error that got hidden by the std::any and happened to miraculously work anyway check-in: fabfc6df97 user: achavasse tags: trunk
2021-09-21
22:43
Resurrected and updated trie versus trie matching that was removed [e9ee5d4728e2b2807b761d67820df11dcfbcdbaea2742828ac9ec8f8d3372e3e|a long time ago] to attempt an overload resolution optimization check-in: 626dafb38e user: achavasse tags: trunk
18:48
eir: remove the function to match a single eir against another eir, which was never actually used check-in: dbf5bbf612 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-19
23:35
Fixed various bugs encountered while trying to override an extension point in the prelude check-in: 89c0616e71 user: achavasse tags: trunk
20:18
Implemented "Implies" and "PHOverride" verification-specific CIR instructions check-in: 56ae4179a9 user: achavasse tags: trunk
19:30
g0 api: ReferenceType and retrieving type predicates check-in: 78e91a4545 user: achavasse tags: trunk
16:06
Began implementing the prelude, which now sets up the g1 namespace, hiding all the internal builtins and APIs from user code. check-in: 15fd7eba11 user: achavasse tags: trunk
14:42
g0 api: #CompileFileToFunction takes the identity to use as root as parameter check-in: dd5e98c20d user: achavasse tags: trunk
14:23
g0 api: Env check-in: 0da72aac62 user: achavasse tags: trunk
13:59
g0 api: diagnostics check-in: 5ccfe91819 user: achavasse tags: trunk
11:20
g0 api: CIR: CFG check-in: bdfee6615a user: achavasse tags: trunk
10:30
g0 api: CIR: BasicBlock check-in: b96622b654 user: achavasse tags: trunk
2021-09-18
18:43
g0 api: more work on the CIR api check-in: 447824df93 user: achavasse tags: trunk
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-17
23:04
g0api, builtins: got rid of TermWrapper and ValueWrapper, use specializations of TypeWrapper instead to allow for more generic code check-in: 4a571387ed user: achavasse tags: trunk
20:43
g0 api: more work on the CIR api check-in: a7c05af907 user: achavasse tags: trunk
19:15
g0 api:
  • extended the generic TypeWrapper to handle pointers to types that aren't part of the Term variant
  • more work on the CIR api
check-in: ab9c71d048 user: achavasse tags: trunk
2021-09-16
21:31
g0 api: started implementing the CIR api check-in: 8dd49b0d89 user: achavasse tags: trunk
21:01
g0 api: implemented Value api check-in: 5c68efeb07 user: achavasse tags: trunk
20:05
g0 api: the EIR Terms are now completely covered check-in: 78da84d2af user: achavasse tags: trunk
19:00
More work on the g0 EIR api check-in: 967d3ba3d7 user: achavasse tags: trunk
2021-09-15
22:15
Fixed the generic CTType and RTType patterns, and removed the super generic assignment operator overload that would accept literally any type check-in: ea7c04df2f user: achavasse tags: trunk
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
01:02
More work on the extensibility api check-in: 29872be1f2 user: achavasse tags: trunk
00:11
Added a test for, and fixed tctrie variable length vector type checking check-in: c1b565fdda 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