Skip to content

v1.3.0

Compare
Choose a tag to compare
@xmamo xmamo released this 29 Oct 23:51
· 15 commits to master since this release
  • Devin’s UI now utilizes a modern header bar, where the ⏵ and ⏹ buttons are displayed alongside the window controls.

  • A worker thread is now used to update Devin’s UI when the parser and type checker run. Previously, each keystroke would spawn a thread to run the parser and then the type checker. Haskell threads are apparently similar to green threads or fibers; nonetheless, avoiding the creation of this many tasks should make the application more lightweight.

  • A worker thread is now used for Devin’s interactive debugger. Similar to the worker thread described above, this avoids spawning a new thread each time a debugging session is started.

  • Unified the unary operators not and len and functions. Parsing, type checking, and evaluating unary operators is now equivalent to handling functions.

  • The binary operators <, <=, >, >= now allow comparisons between values of any type, as long as both operands are of the same type. If the operands are non-numeric, a lexicographic comparison is performed.

  • Renamed Reference to Cell. The purpose of this change is twofold: providing a better and shorter name, and aligning such name with the terminology used in the thesis. All symbols and functions referring to references have also been renamed using this new terminology: that is, cell instead of reference.

  • The syntax tree and debugger’s state in Devin’s UI are now updated by diff. Previously, an update of the syntax tree or debugger state would cause the relevant visualization to be cleared and rebuilt from scratch. As a result, the user’s selection would be cleared, along with the information about which nodes/frames were expanded and which weren’t.

  • Improved Devin’s parser. Now, variables and functions with names that are equal to keywords can be defined and used. Previously, using functions or variables with keywords as names was not always possible or ergonomic, even though defining such objects has always been feasible.

  • Renamed: toFloatintToFloat, toIntfloatToInt. Unlike operators, functions are not polymorphic; being specific about what gets converted to what is more correct and allows for possible future conversion functions.

  • Difference lists are now used for efficiency. This is faster than (++) when accumulating comments during parsing and errors during type checking.

  • Optimized the parser for rational expressions.

  • Refactored and reformatted Devin’s source code.

  • Substantially improved the thesis by adding more explanations and enhancing word choice.