You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

270 lines
5.7 KiB

# Changelog
## Unreleased
2 years ago
xxx
## v0.7.0 (2022-06-15)
**Changes**
- Arrays now have a fixed capacity
**Features**
- Instead of a temporary directory, heap memory is used for compilation
- Support for binary, hexadecimal and octal number notations
- Support for `_` character in integers (E.g. `1_000_000`)
- Parser errors have been improved in consistency and readability
- Compile to stdout by using the `-o -` flag
- Proper support for utf-8
QBE generator (#42) * Only build standard library for JS target * Add initial data structures for QBE generator * Allow generators to return an error Required for QBE generator * qbe: implement function generation * qbe: generate integer literal expression * qbe: generate return with expression * qbe: generate boolean expression * qbe: implement most of binary operations * qbe: store a type in scope maps * qbe: implement variable access expression * qbe: implement function declarations * qbe: implement if/else * qbe: implement while loops * qbe: implement break in loops * qbe: implement continue * qbe: implement expression statement * qbe: implement function calls * qbe: implement assignment for variables * qbe: add QbeValue, use it instead of temporaries With old approach, it was not possible for function call instruction to accept a $-global value (for static strings), as well as having an inconsistent API for QbeInstr::Copy because of Either<...>. QbeValue can hold either a temporary, global or a constant literal. This allows it to be used everywhere, without hacks like Either for copy. * qbe: implement string literals * qbe: move Assign into generate_assignment * qbe: add typedefs * qbe: generate offset table for structs * qbe: implement struct initialization * qbe: resolve struct variable types * qbe: convert assignment QBE statements to base types This prevents generating incorrect IR with structs * qbe: implement field access * qbe: do not cast to ABI types in scope * qbe: implement assignments to field access * qbe: store loop labels as a stack Fixes issues when using continue/break in nested loops. * docs: add QBE to supported backends * Add QBE backend to changelog * qbe: implement assignment BinOps (e.g. +=) * qbe: resolve arrays in variable types * qbe: implement array initialization * qbe: add aggregate type fills (e.g. { w 12 }) * qbe: generate aggregate types for arrays
3 years ago
- Initial support for QBE backend
**Fixes**
- Allow constructor expressions as function arguments
- Fix `self` keyword inside statement
3 years ago
## v0.6.0 (2021-02-28)
**Changes**
- Comma separation for struct fields has been removed
**Features**
- Struct methods (#19)
- Compile-backend will be determined based on file extension (#20, #21)
**Fixes**
- Fixed a bug where strings were terminated using both `"` and `'`
- Fixed circular imports for modules
- Fixed structs not being imported from other modules
3 years ago
## v0.5.1 (2021-02-25)
Sabre is now Antimony!
**Changes**
- "sabre" was replaced with "sb" (E.g. run `sb run main.sb` to run a program)
3 years ago
## v0.5.0 (2021-02-23)
**Features**
- Match statements (#15)
- Modules and imports (#17)
3 years ago
- Support for Docker
- Support for Arch Linux build system (Thanks Alex)
**Fixes**
- Fixed a bug with nested expressions and arithmetic operations
**Documentation**
- Added some in-repo technical documentation
- Minor fixes
3 years ago
## v0.4.0 (2021-02-20)
This release introduces the concept of structs, alongside many improvements to the documentation.
**Features**
- Assignment operators (#10)
- Structs (#12)
**Fixes**
None
**Documentation**
- Fixed some typose and broken links
- Document boolean values
- Added this changelog!
## v0.3.0 (2021-02-12)
This release adds type inference to Antimony. There are also a lot of improvements in terms of documentation. The docs are now at a state that can be considered "usable".
**Features**
- Type inference
- The `any` type
- First attempt of LLVM backend
**Fixes**
- Fixed an error when printing numbers
**Documentation**
- Added documentation for for loops
- Added documentation for while loops
- Documented LLVM backend
- Documented comments
- Updated contributing guidelines
## v0.2.1 (2021-02-06)
**Fixes**
- Fixed an issue where nested expressions where not compiled correctly
## v0.2.0 (2021-02-06)
This version introduces a lot of improvements regarding loops and arrays.
**Features**
- Support for nested arrays
- `break` and `continue` statements
**Documentation**
- Link to our matrix channel in README
- Install Antimony via Cargo
## v0.1.1 (2021-02-06)
Follow-up release that fixes some issues with the published crate.
## v0.1.0 (2021-02-06)
This release is the first to be published to crates.io. The crate is called [antimony-lang](https://crates.io/crates/antimony-lang).
**Features**
- Uninitialized variables
- For loops
**Fixes**
None
**Documentation**
- Functions fully documented
## v0.0.4 (2020-12-18)
This release tries to lay the groundwork of a possible C backend.
**Features**
- An unstable, opt-in C backend
- `len()` standard library function
- `rev()` standard library function
- Function return types
**Fixes**
- Booleans as function parameters
**Documentation**
- A lot of improvements
## v0.0.3 (2020-12-10)
This release adds new vital features to the language.
**Features**
- While loops
- Boolean type
- Variable assignments
- Basic standard library
## v0.0.2 (2020-12-09)
Direct follow-up release that didn't add or remove anything
## v0.0.1 (2020-12-09)
Initial release with basic featureset.
**Full shortlog**
```
Garrit Franke (74):
Initial commit
Add license
Add curly braces
Parse functions
Fix function parsing
Update math example
Refactor TokenType
Implement return statement
Fix keyword recognition
Fix test compilation
Fix tests and comments
Add variable declarations
Implement returning variables
Pretty print AST output
Add strings
Rename flex -> antimony
Fix example filename
Add parser tests
Add multiple functions test
Add token positions
Add token positions
Allow empty returns
Add x86 generator scaffolding
Generate assembly
Add JS generator
Fix warnings
Implement return generation
Refactor x86 generator
Print result of main for js target
Fix infinite loop when parsing strings
Add CI
Add function arguments
Add function arguments
Tokenize Comma
Fix return with expression
Remove uneeded compount statement
Add math operations
Fix parsing of complex compound expressions
Clean up expression parsing
Refactor function call parsing
Change function declaration syntax
Add greeter example
Add fib example
Add basic conditionals; remove semicolons
Allow multiple statements in if conditional
Add TODO file
Add js generator for variable declarations
Add remaining comparison operators
Add Readme
Add backend-state to README
Add CLI TODO
Add error reporting TODO
Fix typo
Add builds.sr.ht badge
Add basic CLI
Revert "Change function declaration syntax"
Fix production build
Fix examples
Fix readme
Fix compound op with identifier first
Fix fib example
Add conditional else if branch
Generalize block into own statement
Add else branch
Add copyright notices
Fix warnings
Add integer arrays
Clean up error handling
Refactor parser module structure
Fix warnings
Add docs
Add placeholder for documentation
docs: add placeholder for CLI
docs: add placeholders for developers
```