Skip to content

Latest commit

 

History

History
111 lines (92 loc) · 4.16 KB

changelog.md

File metadata and controls

111 lines (92 loc) · 4.16 KB

Change Log

Version 0.1.0

Added

  • --compileOnly flag which compiles to a binary, but does not execute the result
  • Primitive class implementation
  • Delete instruction to consume values
  • Class destructors
  • Class clone operations
  • String class
  • No longer need a return statement on a void function
  • Bitwise cast (for core development only)
  • Elif statement
  • Fixed inverted signedness issues on integer comparison
  • Escaped string characters
  • Constant Function Arguments

Fixes

  • Bug with nested structure access
  • Composition of stats where value is undefined in all
  • Consumption of single continuous state (when one branch of an if returns)
  • Fixed not detecting deconstruction of values within if-statements
  • Ability to override function in file
  • Allowing multiple definitions of structure term

Changes

  • The uvc command now executes the result by default.
  • No longer need a return statement for void functions

Tweaks

  • Tweaked the automated testing to reflect the new argument changes
  • Compiler skips merging changes between a branch if the value has not been updated in either branch

Version 0.0.2

Added

  • Ability to lend primitive values
  • Can now use external structures within uniview code

Fixes

  • Fixed being unable to use structure access chaining a.b.c
  • Fixed unix segfault not being picked up as a failed execution

Tweaks

  • Primitive numbers are 64bit by default.
  • Compiler now generates all IR in fragments before joining (will assist with template implementation).
  • Changed sizeof function to being a compiled default non-inlined function.
  • Changed primitive function name static_cast to cast.
  • Probabilities are now used to represent loading structure values (GEPs) to remove irrelevant code and clean up the compiler code base.

Version 0.0.1

Added

  • Able to create a clone of any linear value
  • Able to parse any linear variable forward to a function call and reasign the modified result
  • Compiler parameter for llvm optimisation sweeps
  • Cloning of linear variables
  • Lending a reference forward to child functions (linear variables only)
  • Borrow checker ensuring child function doesn't corrupt the reference
  • Ability to include external files to the LLVM build pass
  • Ability to assume more complex external filenames
  • Basic math library
  • f64 printing
  • Verify only compilation mode
  • Expression chaining (1 + 2 + 3)
  • Opperator Precedence
  • Experimental Time Library

Fixes

  • Not parsing structures properly on return
  • Printing error buffer twice on clang compilation failure
  • Crash when using undefined type in template
  • Returning within if-statement causing that branch's instructions to not be saved
  • Composing structures with structure elements
  • Frash during scope cleanup due to bad code reference
  • Using undefined variables within expressions causing crash
  • Fixed crash with unhandled call return values
  • Crash when structures are defined after accessing attribute within IR

Tweaks

  • Decomposed structure elements now have the correct internal names for error messages
  • Compile errors now use path relative to root file (shorter printing)

Version 0.0.0


Added

  • Assign and return numbers
  • Use primitive variable inputs
  • Basic operands with primitive types
  • Primitive types using non-linear type system for easier use
  • Basic automatic test suite
  • Typecasting of primitive types
  • Implemented if statements
  • Clearer Error logs. Embeds code snippet with line ref
  • Strucutre manipulation support
  • Declaration type can be derived from assignment

Changes

  • Now uses colon notation for types

Fixes

  • Fixed strings requiring pointer types

Tweaks

  • Internal representation of LLVM-IR now allows for latent code branches (sections of code which can be enabled after initial compilation)
  • Now executes clang compilation synchonously for cleaner outputs
  • Won't execute the output if clang compilation fails