Skip to content

Releases: PlutoLang/Pluto

0.4.2

08 Oct 14:37
Compare
Choose a tag to compare
  • Fixes a regression introduced in Pluto 0.4.1 that prevented the walrus operator from working within lambda functions that are passed as function arguments

0.4.1

08 Oct 08:16
Compare
Choose a tag to compare
  • Updated lexer to tokenise in a separate pass
    • This fixes Pluto's error messages sometimes not showing the full line
  • Disallowed use of the walrus operator within a function call because it was found to be more janky than expected

0.4.0

30 Aug 11:02
87b19a9
Compare
Choose a tag to compare

Additions:

  • Walrus Operator
  • Default parameters for functions.
  • New standard library: lcryptlib, for various hash algorithms and cryptographic PRNGs.
  • New warnings:
    • Unreachable code.
    • Too many function arguments.

Improvements:

  • Switch case may now use variables.
  • Shorthand ternary syntax from C/C++.
  • Warnings can be configured with comments.
  • Improved performance of some common arithmetic algorithms.
  • VM Dumping has been rewritten for superb runtime detail on all opcodes, their arguments, their results, etc.
  • string.upper & string.lower take a second parameter indicating a specific index to change. Absence of this parameter preserves default behavior.

0.3.2

09 Aug 21:10
Compare
Choose a tag to compare

Improvements:

  • io.copyto will now overwrite existing files instead of throwing an exception.
  • Improve error handling of other exception-prone IO functions.

0.3.1

06 Aug 23:26
Compare
Choose a tag to compare

Bugfix:

  • String.split would previously invoke an infinite loop when an empty string is used as the delimiter.

0.3.0

27 Jul 06:27
485edbe
Compare
Choose a tag to compare

Additions:

  • Inlined method creation.
  • STR in STR expressions.
  • KEY in INDEXABLE expressions.
  • Generalized iteration, no need for pairs.
  • io.listdir
  • Reserved keywords as valid fields.
  • Null-coalescing operator (w/ compound operator).
  • continue N & break N for manipulating outer loops.
  • Optional type-hinting, with parser warnings.
  • Safe accessor navigation, to avoid "attempt to index nil" errors for deeply nested fields.

Changes:

  • table.contains now returns an index if found and nil otherwise (previously returned true or false).

Improvements:

  • Switch no longer has syntactic restrictions
  • Greater switch performance

Documentation for the new changes can be found here.

0.2.2

15 Jul 20:05
2eb0e8d
Compare
Choose a tag to compare
  • Fixes a bug with the continue keyword

0.2.1

15 Jul 20:07
Compare
Choose a tag to compare
  • Added VM Dump
  • Implemented long jump optimisation

0.2.0

15 Jul 20:11
ec7966e
Compare
Choose a tag to compare
  • Added compile-time warnings for duplicate local declarations
  • Added optional ANSI color sequences in various error & warning messages
  • Added support for ternary expressions
  • Added continue statement
  • Added Table Freezing / Immutability
  • Added Switch/Case statements
  • Added user_data to global_State
  • Added !=
  • Added compatibility mode
  • Added table.contains
  • Added new time functions to os api
  • Added negative string indexing
  • Added compound concatenation operator
  • Added new string functions
  • Added portable jumptable implementation that can be optionally enabled
  • Added REPEAT .. WHEN loop support
  • Added new IO library functions
  • Added _PVERSION
  • Implemented table length cache optimisation (2x speedup)
  • Implemented optional parentheses around string literals for method invocation
  • Increased local variable limit from 200 to 249
  • Rebased with Lua for latest bugfixes

0.1.0

15 Jul 20:14
Compare
Choose a tag to compare

Initial version.

Notable features:

  • Lambda expressions
  • Arbitrary character insertion in numeral literals
  • Many compound operators
  • ** exponent operator