Releases: xmamo/devin
v1.4.0
v1.3.0
-
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
andlen
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
toCell
. 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:
toFloat
→intToFloat
,toInt
→floatToInt
. 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.
v1.2.1
v1.2.0
-
The graphical debugger has been improved. Now, a simplified version of the stack is displayed: frames allocated by blocks inside functions now appear to be part of the function’s scope. Furthermore,
—
is used as a placeholder for empty frames. -
Previously, Devin’s UI would highlight the current line. This was a problem in dark mode, as there wasn’t enough contrast between text and line highlighting in the default Adwaita theme. Therefore, current line highlighting is now disabled.
-
Devin’s UI code has been refactored by restructuring and renaming modules.
-
The thesis has been updated to reflect the aforementioned changes.
v1.1.0
-
Type checking is now more consistent across all operators: if an overload isn’t found, the resulting type is now always
Unknown
. Previously, for example, type-checking the expressionlen x
would yield the typeInt
even if the type ofx
was unknown. -
Minor modifications to the thesis.
-
Other minor code improvements.