Goose  Timeline

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

80 check-ins using file bs/ir/tostring.h version c14b55ad6e

2019-07-23
19:44
codegen: implemented LowerType. check-in: e42ae3d514 user: achavasse tags: trunk
19:02
Moved overloadset's implementation into sema, as we'll need to keep pointers to some of them (used as extension points) in env. check-in: f8f1fcd169 user: achavasse tags: trunk
13:44
execute: added an execution limit on calls and branch instructions to be able to time out of non-terminating compile time code. check-in: f0b3b44bbb user: achavasse tags: trunk
2019-07-22
15:36
builtins: added a function to test whether a type is a runtime type. check-in: 138905cf4e user: achavasse tags: trunk
14:50
builtins: runtime types: added a common prefix to easily be able to check if a type is a runtime type. check-in: 64244c6d0c user: achavasse tags: trunk
13:15
Added a helper to perform a compile time OverloadSet invocation. check-in: c768853a4f user: achavasse tags: trunk
12:50
builtins: added a helper to create and register an empty OverloadSet, to serve as extension points for the library. check-in: f10b5377f7 user: achavasse tags: trunk
2019-07-21
23:48
Bumped llvm version. check-in: 8648053c0d user: achavasse tags: trunk
2019-07-16
20:06
builtins:
  • fixed runtime type definitions.
  • added definitions for runtime struct types.
check-in: 1f7039ee83 user: achavasse tags: trunk
2019-07-15
21:58
builtins: added definitions for runtime array type. check-in: eade11527c user: achavasse tags: trunk
21:43
builtins: added definitions for runtime pointer type. check-in: 84b541f45b user: achavasse tags: trunk
21:13
sema: removed a couple of superfluous rule lookups when resolving an invocation. check-in: c7da710bb0 user: achavasse tags: trunk
20:21
builtins: added definitions for basic runtime types. check-in: 54b8960363 user: achavasse tags: trunk
19:10
builtins: renamed int and string to ct_int and ct_string to distinguish them from the future runtime and user facing types. In the end there should be little to no reason to ever use these types directly outside of the library anyway. check-in: f40cfaed57 user: achavasse tags: trunk
2019-07-14
19:29
codegen:
  • implemented api to generate functions.
  • implemented tests for function generation.
check-in: ab106469dd user: achavasse tags: trunk
2019-07-13
23:30
  • Added missing quoting around function type's domain.
  • Detect and error out when an using expression is invoked recursively.
  • Fixed passing of generic values to builtin funcs (the pattern used was incorrect and didn't work when passing some types).
  • Added an unification rule to prevent single element tuples from being peeled off when unified against generic values.
  • Implemented an api function to compile a file into a function of a specified type and signature.
check-in: 50da1401ee user: achavasse tags: trunk
19:33
codegen: very first draft of function generation. check-in: 98a6fcaf3f user: achavasse tags: trunk
2019-07-12
20:58
codegen: implemented mangling. check-in: f97c0b2cab user: achavasse tags: trunk
2019-07-11
19:32
Allow overloading of builtin functions. check-in: bff15eb03d user: achavasse tags: trunk
2019-07-09
22:46
codegen: added builtin functions to create a module and to dump it as llvm assembly text. check-in: 429f55ae3c user: achavasse tags: trunk
21:14
Began the implementation of the code generator. check-in: c3a5885c4f user: achavasse tags: trunk
2019-07-08
19:40
Implemented parsing rules for function domain specifiers, and fixed a couple of related bugs. check-in: b39d1cbe9a user: achavasse tags: trunk
2019-07-07
16:22
Parser: parse function type modifiers. check-in: 105ba83ebf user: achavasse tags: trunk
10:33
Parser: refactored function and template function parsing to go through a common code path to build function types. check-in: 5fd301c5f9 user: achavasse tags: trunk
2019-07-06
13:27
Cleanup: remove a superfluous argument from BuildFunc(). check-in: f0724b61e5 user: achavasse tags: trunk
2019-06-29
14:36
Handle execution domains when invoking/unifying functions, template functions, overload sets and constrained funcs. check-in: 2acce94d2d user: achavasse tags: trunk
13:43
Build fixes to work with the latest git version of libc++. check-in: 326d403e6c user: achavasse tags: trunk
11:40
Added a domain specifier in function and template function types. check-in: ef1e94f44d user: achavasse tags: trunk
2019-06-27
19:37
sema: fixed a context creation mistake when resolving an invocation. check-in: 48ee263157 user: achavasse tags: trunk
19:30
sema: when resolving an invocation, attempt first to resolve it as a compile time invocation when applicable. check-in: c046a7f803 user: achavasse tags: trunk
2019-06-23
14:01
Functions are now recompiled for different execution domains as needed. check-in: 25e7ce2c8c user: achavasse tags: trunk
2019-06-22
15:00
Func: functions can be stored in an invalid state which means they couldn't be compiled for a given domain, but still contain enough information to compile/retrieve that function for a different domain. check-in: 87068d0fe8 user: achavasse tags: trunk
2019-06-21
18:22
Domains: setup correct identity domains in a few places. check-in: aaa9d75b0c user: achavasse tags: trunk
2019-06-19
19:49
  • parser: don't hardcode the builtins identity prefix in the rule helpers anymore.
  • builtins: move the common identity prefix used by all builtins into a separate function, to be able to easily change it.
  • builtins: prepend the CompileTime domain specifier to the root builtin identity.
  • sema: don't store the domain separately, extract it from the identity when needed instead.
check-in: cde0c6d0e3 user: achavasse tags: trunk
2019-06-18
21:44
Added some helper functions for domains and identities. check-in: a15bdabfec user: achavasse tags: trunk
2019-06-17
22:00
Pass the sema context to ParseFuncBody(), rather than just the env. check-in: 9320a3b76f user: achavasse tags: trunk
2019-06-16
14:41
Added the current domain to sema context, and include it in function identities. check-in: 7e053c8063 user: achavasse tags: trunk
2019-05-25
10:44
Domains: refactored functions to use the new representation. check-in: cf3bb178ea user: achavasse tags: trunk
2019-05-22
21:35
Execution domains: created a new representation for function values that contains enough informations to retrieve or build the same function for a different execution domain. check-in: cd9b67cf09 user: achavasse tags: trunk
2019-05-04
21:04
Cleanup: make use of c++20 explicit lambda template parameter lists to get rid of some clunky decltype(). check-in: 980e2740bc user: achavasse tags: trunk
2019-04-14
20:10
Small cleanup. check-in: 26ee86b2dd user: achavasse tags: trunk
18:43
Allow any texpr to be used as a function parameter, so we can write a generic parameter as just $a instead of $t $a if we don't care about capturing its type. check-in: da786f812f user: achavasse tags: trunk
17:30
Fixed a test name. check-in: 0ca4414e9d user: achavasse tags: trunk
17:22
Added tests for higher order template functions, and higher order polymorphism. check-in: 185f783a15 user: achavasse tags: trunk
17:07
Added tests for higher order functions, and fixed some previously missed bugs. check-in: 31e4e0e834 user: achavasse tags: trunk
15:18
Added tests for overloading and template functions. check-in: fa01f562ca user: achavasse tags: trunk
14:57
Removed the ct_ prefix from the compile time int and string types for now. It's ugly and we don't need to decide on their names until starting library work anyway. check-in: 2b1598932c user: achavasse tags: trunk
14:53
Fixed a few bugs and started to turn the haphazard test code into proper, automated tests of the core language features. check-in: f78ccdd8a8 user: achavasse tags: trunk
2019-04-13
22:03
api: added a builtin Execute command, which executes the specified file. Also added the possibility to optionally return an error code. check-in: 47708770e6 user: achavasse tags: trunk
10:55
Started a first version of a minimal compile time api to be able to implement proper automated testing of the language features. check-in: b2a8a8ad0b user: achavasse tags: trunk
2019-04-12
19:37
  • cleaned up and refactored llr into a proper cfg representation.
  • added a CFG builder class in sema, currently very rudimentary.
  • split the parser's value building workflow from the llr construction workflow, which now goes through a CFG builder.
  • implemented the return statement.
check-in: 5ea39472a2 user: achavasse tags: trunk
2019-04-11
19:11
llr: add Ret element. check-in: 82591a0918 user: achavasse tags: trunk
2019-04-09
21:38
Higher order polymorphism: changed the representation of constrained func to be explicit instead of just an opaque pointer, so that it can be used as is within function identities. check-in: b7fd77d885 user: achavasse tags: trunk
20:15
Standardize the way function identities are generated, and give overload sets their own identities. This will be necessary to generate proper identities for template functions instanced with polymorphic parameters. check-in: da8245add8 user: achavasse tags: trunk
2019-04-08
22:15
Compare the addresses of pvoid once again in compare to match the behavior of pvoid stored in tries. That change wasn't actually needed anyway. check-in: 0a9cac94de user: achavasse tags: trunk
21:39
func: move the identity back into the llr func, as we will need it some day to generate a label for the code generation. check-in: a307741bd9 user: achavasse tags: trunk
20:29
Higher order polymorphism: fix non-callable template lambdas passed as a generic compile-time parameter. check-in: 007891dc2f user: achavasse tags: trunk
2019-04-06
15:19
Higher order polymorphism: implemented the unification of a polymorphic tfunc type param with an overload set. check-in: 2f27622539 user: achavasse tags: trunk
14:16
  • Simplified TDecl: the right hand side can now only be a TVar. Removed the colon operator.
  • Added the possibility in unification to make hole resolution non mandatory for a sub expression.
  • Higher order polymorphism: implemented the unification of a polymorphic tfunc type param with a template lambda.
check-in: fc331f1703 user: achavasse tags: trunk
2019-04-04
20:08
Higher order polymorphism: refactored TDecl to use its own representation as its signature. check-in: f5fb53ad20 user: achavasse tags: trunk
2019-04-03
20:56
Higher order polymorphism: overloadset and tfunc invocation no longer consider multiple unification solutions with the same score to be ambiguous if they are actually the same solution. check-in: be53d55f67 user: achavasse tags: trunk
2019-04-02
20:38
Higher order polymorphism: implemented ConstrainedFunc unification. check-in: f6c1df5107 user: achavasse tags: trunk
2019-04-01
20:37
sema: implemented SubstituteNamed. check-in: 121c78d7e5 user: achavasse tags: trunk
20:25
Higher order polymorphism: implemented ConstrainedFunc invocation rule. check-in: 01c479df9a user: achavasse tags: trunk
19:57
Higher order polymorphism: added ConstrainedFunc type. check-in: 0d3294dcf0 user: achavasse tags: trunk
2019-03-31
20:42
Higher order functions: template lambdas can be passed to template function parameters. check-in: 25d0ee65d4 user: achavasse tags: trunk
19:05
Use conan to install immer, and updated conan.cmake to the latest version. check-in: b9a16492e0 user: achavasse tags: trunk
10:26
When unifying an overloadset with a tfunc typed parameter, create a new namespace index to isolate hole names in the overloaadset from those in the called's function signature. check-in: 7da1393cf1 user: achavasse tags: trunk
10:18
Higher order functions: overload sets can be passed to template function type parameters. check-in: e184bef77b user: achavasse tags: trunk
2019-03-30
16:28
  • Fixed the conversion of a type type value to an ir expression.
  • Fixed anonymous holes not being counted in unification scores.
check-in: ecf8c6820f user: achavasse tags: trunk
15:30
  • Changed type's type representation to be able to pass types around as value anywhere.
  • Fixed a bunch of bugs.
check-in: 0e66d22527 user: achavasse tags: trunk
2019-03-28
21:00
Higher order functions: plain lambdas can be passed to template function type parameters. check-in: ee15f9081f user: achavasse tags: trunk
2019-03-27
23:27
Templates: implemented the rules for tfunctype texprs. check-in: 10aff6cb27 user: achavasse tags: trunk
22:53
Templates: split out tfunc signature construction into a separate function. check-in: 63fb3517ff user: achavasse tags: trunk
22:46
Template: recognize template function types as texprs, so they can be used in parameter declarations. check-in: 302667d2d9 user: achavasse tags: trunk
2019-03-26
20:35
Higher order functions: overload sets can be passed as arguments for function type parameters. check-in: cf4313d58b user: achavasse tags: trunk
2019-03-25
22:39
Higher order functions: it is now possible to bind a template lambda to a function typed parameter. check-in: 06b4cded56 user: achavasse tags: trunk
2019-03-23
14:04
ir: made it possible to use anonymous ANYTERM patterns in matching. check-in: 61b4955ba0 user: achavasse tags: trunk
13:45
Higher order functions: some fixes and cleanup, the simplest case (lambda function passed as parameter for a matching function type) works. check-in: 152d39532f user: achavasse tags: trunk
13:08
  • ir: terms can now contain a pointer to another term, for situations where a mutable terms needs to be shared by multiple expressions.
  • func: use a term pointer to store the function's content, so that we can distinguish a not-yet-parsed function from a non evaluated function value.
check-in: a742f106d4 user: achavasse tags: trunk