PPL - Pseudo-Programming Language
- Convenience
- Simplicity
- Readability
- Safety
- Mixfix operators
- Big integers
- Generics (traits)
- Rationals by default
-
Algebraic effects
-
Types arithmetics
-
Pattern matching
-
Metaprogramming
-
Documentation
-
Split builtin module into several files
-
Fix crash in diagnostics due-to wrong source file
-
Check result of the program itself in
test_compiler_result
-
Add
Array
type -
Fix memory leak due to pointers to builtin types
-
Destructors for parameters
-
No tmps for literals inside of constructors
-
Fix recursive trait (AsString with prints)
-
Fix references in traits test
-
Fix self mapping
- Printable trait should take references
- mutable parameters
- migrate to pass-by-ref (branch
arc
) - Prefer candidates with mutable references, when possible
- Fix problems with to_ir and loading references (especially globals). This causes issues in iterator
- Benchmark for linear algebra
- Sum of series benchmark
- Use traits to check for
clone
anddestructoy
functions - Forbid recursion without
@recursive
annotation - Generate clone for types with clonable members
- Generate destructors for types with destructible members
- Add type aliases
- Add dependency analysis for modules and declarations
- Add all
c
types - Intern strings that are generated in IR
-
VariableReference
andMemberReference
should have reference types - Support
use module.{a, b, submodule.c}
- Still return declarations even if they have errors, so there is no
undefined_*
errors later - Generic types shouldn't be replaced, but rather constrained (e.g
T: Integer
) - Replace calls to trait functions with calls to specialized functions
- Run monomorphization from the top of the module
- Reject lowercase names for types
- Rebinding references
- Remove need for escaping
type
intype of <:T>
- Add better errors for inferred generics
- Unify
Self
andGenericType
-
Any
trait - Logic for printing decimals inside ppl
- Unsafe code marker
- Format strings
- Varadic arguments functions
- Allow newlines inside parentheses
- Allow tabs before comments for members
- Add
assert
andpanic
- Fix bus error (caused by llvm 16 issue)
- Remove cached names from functions
- Remove unnecessary information from errors (like
Error: <Type>
) - Check compiler errors in repl too
- Make statements to return
None
type for convenience - Make
if
to be an expression? - Add
HashMap
type - Explicit traits implementation
- Functions as values
- Add values as types (e.g
1 | 2 | "lol"
) - Add type unions
A | B
,A & B
- Use
IndexMap
instead ofHashMap
to guarantee order of declarations