Skip to content

Releases: lune-org/lune

0.6.3

26 Mar 07:50
ffe0ce1
Compare
Choose a tag to compare

Added

  • Added support for instance tags & CollectionService in the roblox built-in.

    Currently implemented methods are listed on the docs site.

Fixed

  • Fixed accessing a destroyed instance printing an error message even if placed inside a pcall
  • Fixed cloned instances not having correct instance reference properties set (ObjectValue.Value, Motor6D.Part0, ...)
  • Fixed Instance::GetDescendants returning the same thing as Instance::GetChildren (oops)

0.6.2

25 Mar 11:00
6fe642e
Compare
Choose a tag to compare

This release adds some new features and fixes for the roblox built-in.

Added

  • Added GetAttribute, GetAttributes and SetAttribute methods for instances
  • Added support for getting & setting properties that are instance references

Changed

  • Improved handling of optional property types such as optional cframes & default physical properties

Fixed

  • Fixed handling of instance properties that are serialized as binary strings

0.6.1

23 Mar 08:57
6e411de
Compare
Choose a tag to compare

Fixed

  • Fixed writePlaceFile and writeModelFile in the new roblox built-in making mysterious "ROOT" instances

0.6.0

22 Mar 19:48
3a36a9d
Compare
Choose a tag to compare

Added

  • Added a roblox built-in

    If you're familiar with Remodel, this new built-in contains more or less the same APIs, integrated into Lune.

    There are just too many new APIs to list in this changelog, so head over to the wiki to learn more!

  • Added a serde built-in

    This built-in contains previously available functions encode and decode from the net global.

    The plan is for this built-in to contain more serialization and encoding functionality in the future.

  • require has been reimplemented and overhauled in several ways:

    • New built-ins such as roblox and serde can only be imported using require("@lune/roblox"), require("@lune/serde"), ...
    • Previous globals such as fs, net and others can now also be imported using require("@lune/fs"), require("@lune/net"), ...
    • Requiring a script is now completely asynchronous and will not block lua threads other than the caller.
    • Requiring a script will no longer error when using async APIs in the main body of the required script.

    All new built-ins will be added using this syntax and new built-ins will no longer be available in the global scope, and current globals will stay available as globals until proper editor and LSP support is available to ensure Lune users have a good development experience. This is the first step towards moving away from adding each library as a global, and allowing Lune to have more built-in libraries in general.

    Behavior otherwise stays the same, and requires are still relative to file unless the special @ prefix is used.

  • Added net.urlEncode and net.urlDecode for URL-encoding and decoding strings

Changed

  • Renamed the global info function to printinfo to make it less ambiguous

Removed

  • Removed experimental net.encode and net.decode functions, since they are now available using require("@lune/serde")
  • Removed option to preserve default Luau require behavior

0.5.6

11 Mar 08:08
72c30d3
Compare
Choose a tag to compare

Added

  • Added support for shebangs at the top of a script, meaning scripts such as this one will now run without throwing a syntax error:

    #!/usr/bin/env lune
    
    print("Hello, world!")

Fixed

  • Fixed fs.writeFile and fs.readFile not working with strings / files that are invalid utf-8

0.5.5

08 Mar 12:59
7cc1aad
Compare
Choose a tag to compare

Added

  • Added support for running scripts by passing absolute file paths in the CLI
    • This does not have the restriction of scripts having to use the .luau or .lua extension, since it is presumed that if you pass an absolute path you know exactly what you are doing

Changed

  • Improved error messages for passing invalid file names / file paths substantially - they now include helpful formatting to make file names distinct from file extensions, and give suggestions on how to solve the problem
  • Improved general formatting of error messages, both in the CLI and for Luau scripts being run

Fixed

  • Fixed the CLI being a bit too picky about file names when trying to run files in lune or .lune directories
  • Fixed documentation misses from large changes made in version 0.5.0

0.5.4

07 Mar 21:22
588ae96
Compare
Choose a tag to compare

Added

  • Added support for reading scripts from stdin by passing "-" as the script name
  • Added support for close codes in the net WebSocket APIs:
    • A close code can be sent by passing it to socket.close
    • A received close code can be checked with the socket.closeCode value, which is populated after a socket has been closed - note that using socket.close will not set the close code value, it is only set when received and is guaranteed to exist after closure

Changed

  • Update to Luau version 0.566

Fixed

  • Fixed scripts having to be valid utf8, they may now use any kind of encoding that base Luau supports
  • The net WebSocket APIs will no longer return nil for partial messages being received in socket.next, and will instead wait for the full message to arrive

0.5.3

26 Feb 20:53
d63ac61
Compare
Choose a tag to compare

Fixed

  • Fixed lune --generate-selene-types generating an invalid Selene definitions file
  • Fixed type definition parsing & generation issues on Windows

0.5.2

26 Feb 16:27
30ab71c
Compare
Choose a tag to compare

Fixed

  • Fixed crash when using stdio.color() or stdio.style() in a CI environment or non-interactive terminal

0.5.1

25 Feb 12:58
2901e85
Compare
Choose a tag to compare

Added

  • Added net.encode and net.decode which are equivalent to net.jsonEncode and net.jsonDecode, but with support for more formats.

    WARNING: Unstable API

    This API is unstable and may change or be removed in the next major version of Lune. The purpose of making a new release with these functions is to gather feedback from the community, and potentially replace the JSON-specific encoding and decoding utilities.

    Example usage:

    local toml = net.decode("toml", [[
    [package]
    name = "my-cool-toml-package"
    version = "0.1.0"
    
    [values]
    epic = true
    ]])
    
    assert(toml.package.name == "my-cool-toml-package")
    assert(toml.package.version == "0.1.0")
    assert(toml.values.epic == true)

Fixed

  • Fixed indentation of closing curly bracket when printing tables