Releases: ClueLang/Clue
Releases · ClueLang/Clue
Version 3.2
- Small code improvements
- Added
@import
directive to replaceimport()
andrequire()
- Fixed lines being read wrongly by the scanner
- Fixed code failing to compile without the
interpreter
feature on - Fixed
?>
not being properly deprecated - Fixed pseudo variables not working correctly with
..=
,&&=
,||=
and??=
- Fixed
local a = (...).x y = ...
being considered invalid by the parser - Fixed errors being only half printed to stderr, while the rest was printed in stdout
- Added
rust-version
field in Cargo.toml - Removed remnants of Clue 2.X's macros
- Added safe calling (
?(
) - Improved error messages, they now include the column
- Remade the way safe indexing is compiled
- When importing a module, it gets the module path as the
...
arg - Removed panics in the compiler
- Documented the codebase
- Clue can now be installed from the AUR
- Clue can now be installed from a .deb
- Clue can now be installed from a .rpm
Version 3.1
- Fixed
=>
,<=
and>=
not being ignored by pseudo variables --pathiscode
now saves the output to a file if the name is defined--pathiscode
shows the output automatically (like in previous versions) when the output was not gonna be saved--output
now has a short version-o
ContinueMode
now follow the standard Rust syntax (CONTINUE
->Continue
)- Added
--target
flag to use preset flag values for specific Lua versions --continue
now ignores casing--jitbit
is now deprecated and replaced by--bitwise
- With
--bitwise
Clue can now output valid 5.4 bitwise code --base
's short version was changed to-B
--continue=luajit
is now deprecated and replaced by--continue=goto
- Removed dummy
--types
flag - Fixed nested directives breaking
- Fixed comments removing newlines
- Fixed LuaJIT's bit library not being loaded in the output even when
--jitbit
(now--bitwise
) was set - Fixed floor division not compiling correctly
- Added
usedindex
metamethod (--target=blua
only) - Improved
Code
struct - Added
@iflua
and@version
directives - Added a library interface for
clue_core
Version 3.0.1
- Fixed some functions of the cli being exposed as a library
- Fixed safe indexing to function call resulting in an error if the safe indexing fails (making it not safe at all...)
- Fixed the custom output file name being ignored when compiling a single file
- Fixed the output file not being saved where Clue was called
- When compiling a directory Clue will print more readable paths (for finished/errored files)
Version 3.0
- Reorganized repository using a Cargo workspace
- Refactored arg parsing to not use
unsafe
blocks - Refactored casing of function names (from PascalCase to snake_case)
- Refactored the entire compiler generally
- Refactored the way the parser reads tokens to improve performance
- General refactors and optimizations in all the code
- All internal variables are now named
_internalX
in the output (X being the var id) - Fixed
global a;
causing invalid output - Fixed match blocks inside expressions not properly parsing next tokens
- Fixed Clue skipping a newline inside normal strings when
\
was right before it - Fixed
local a; = ...
being valid syntax - Fixed output sometimes breaking when calling functions in some specific cases
- Fixed
{ [...].a = ... }
being valid syntax - Implemented multi-threaded compilation for compiling directories
- Clue is now installed with
CARGO_PROFILE_RELEASE_LTO
by default - Improved how strings and the output are handled
--execute
can now be disabled on install- Added rpmalloc to improve performance, can be disabled when installing
- Added a precompiler
- Pseudo variables are now handled by the precompiler
- Fixed ternary not working with pseduo variables
- Deprecated
macro
and replaced it with@define
and@macro
- Added
lib.rs
andenv.rs
- Deprecated
?=
and:=
and replaced them with&&=
and||=
- Added
??
and??=
- Added table destructuring (
local {a, b, ...} = ...
) - Added and slightly improved examples
- Replaced HashMaps with AHashMaps
- Minor cleanings in the code
- Removed winres as a build dependency (icon unnecessary for something ran in the console)
- When ran Clue will now set the env varible
CLUE_VERSION
(mainly to be used in the preprocessor) - Added
len
,pairs
,ipairs
andclose
meta methods - Added criterion for benchmarking
- Slightly improved and added new error messages
- Clue now uses
VecDeque
instead ofLinkedList
Version 2.5.3
- Fixed
--execute
not working with--pathiscode
- Fixed a compiled directory not returning what
main.clue
returns when loaded externally - Formatted code
This should, hopefully, be the last 2.5.X release, and the next version should be 3.0.
Version 2.5.2
- Fixed
a || {}
(and similar cases) not being valid syntax - Fixed
--debug
not working properly by remaking most of it - Improved
--execute
's start and finish messages - Updated
struct
,extern
andconstructor
's error messages - Added warning for
macro
Version 2.5.1
- Added
--execute
flag - Compiled code can now be executed from Clue itself with the new flag
- Fixed string scanning when the string ends with
//
(by progmboy)
Version 2.5
- Fixed the compiler adding an additional .lua when the output name already ended in .lua
- Added custom bases
- Added
--base
flag for using custom bases - The default base will now check for main.lua before loading it
- Improved the way flags that are not used by the actual compiler itself are handled
- Renamed
--debugcomments
to--debug
- Added an actual debugging system
Version 2.4.2
- Removed unused code
- Small code improvement
- Fixed raw strings generating invalid code with
]
s and=
s (examples:`]]`
,`]=]`
, ...)
Version 2.4.1
- Fixed
match
not being considered a valid right hand token - Fixed bitwise NOT causing invalid syntax (
a~b
was considered valid) - Fixed and improved raw strings parsing and compiling
- Fixed
\"
,\'
and\`
resulting in an "Unterminated string" error - Fixed table parsing
- Commas in tables are now optional without it being a bug