Releases: lune-org/lune
0.10.4
Added
- Added support for the
jsoncserialization format in theserdestandard library - Added an
mluafeature flag tolune-roblox, so that it may be used from Rust without bundling the entirety of Luau
Changed
- Updated to rbx-dom database version
0.694 - Updated to Luau version
0.694
Fixed
- Fixed attribute name validation being too strict in the
robloxstandard library, not allowing the characters/.- - Fixed various issues in the
robloxstandard library caused by an outdated reflection database and version ofrbx-dom(#358)
0.10.3
0.10.2
Added
- Added support for the ZSTD compression format in the
serdestandard library (#339) - Added support for
UniqueIdproperties to therobloxstandard library (#343) - Added prebuilt Lune binaries for Windows on ARM to GitHub releases
Changed
- Updated to Luau version
0.688 - Lune no longer depends on
liblzma, making it easier to install on macOS - Prebuilt binaries for Ubuntu now use an older version (22.04) for better GLIBC compatibility
Fixed
- Fixed Lune crashing while emitting an error and parsing its source
0.10.1
Fixed
- Fixed a regression where it was not possible to run directories with
init.luaufiles in them directly usinglune run directory-name. - Fixed a panic when calling
process.exitinside a file thatrequirewas called on. (#333) - Fixed a panic when calling
process.exitinside a request handler fornet.serve. (#333)
0.10.0
This version of Lune contains a major internal refactoring of the require function, now using the proper require-by-string APIs exposed by Luau.
If you relied on any (incorrect) behavior of relative, non-@self requires, from within init.luau files in Lune 0.9.0, you may need to update your code.
No other usages of require will be affected - but if you previously encountered any internal bugs or panics during require, these will have been fixed!
Added
-
Added support for TCP client in the
netstandard library.
It may be used either with TLS or not, and basic usage looks as such:-- Plain TCP connections local stream = net.tcp.connect("example.com", 80) -- TLS connections (shorthand) local tlsStream = net.tcp.connect("example.com", 443, true) -- Connections with custom TLS setting & TTL local customStream = net.tcp.connect("192.168.1.100", 8080, { tls = false, ttl = 128 }) -- Interacting with the stream tlsStream:write("GET / HTTP/1.1\r\nHost: example.com\r\n\r\n") while true do local data = tlsStream:read() if data ~= nil then print(data) else break -- Connection was closed end end
-
Added submodules to the
netstandard library:http,tcp, andws.These will be the preferred way of interacting with the
netstandard library going forward, but none of the old functions have been removed or deprecated yet to allow users time to migrate.In a future major version of Lune, direct functions such as
net.socketwill be removed in favor of their equivalent functions in submodules, such asnet.ws.connect. Here is the full new list of functions:net.http.requestnet.http.servenet.tcp.connectnet.ws.connect
-
Added a method
with_libto theRuntimestruct in thelunecrate, to allow registering custom libraries.
Changed
- Updated to Luau version
0.682 - Upgraded to
mluaversion0.11- if you use any of the Lune crates as a dependency, you may also need to upgrade
Fixed
- Fixed errors being emitted twice when the error is thrown from the main (entrypoint) script
- Fixed a panic when calling
net.requestand related functions in the main body of a module duringrequire - Fixed various issues with not conforming to the new Luau require-by-string semantics
0.9.4
Changed
lune setupnow properly sets up a.luaurcfile instead of using legacy VSCode-specific settingsprocess.argsandprocess.envare now plain tables again - not userdata - thank you to everyone who provided feedback on this and the usability issues!
Fixed
- Fixed invalid handling of http redirects in
net.request - Fixed not being able to download binaries for cross-compiling with
lune build - Fixed binary output when running
lune buildnot being deterministic and sometimes truncating - Fixed
cargo install lunefailing due to a yanked dependency (#323)
0.9.3
Added
- Added support for non-UTF8 strings in arguments to
process.execandprocess.spawn
Changed
- Improved cross-platform compatibility and correctness for values in
process.argsandprocess.env, especially on Windows
Fixed
- Fixed stdin not being properly closed when not providing the stdin option to
process.exec - Fixed various crashes during require that had the error
cannot mutably borrow app data container
0.9.2
Changed
- Improved performance of
net.requestandnet.servewhen handling large request bodies - Improved performance and memory usage of
task.spawn,task.defer, andtask.delay
Fixed
- Fixed accidental breakage of
net.requestin version0.9.1
0.9.1
0.9.0
The next major version of Lune has finally been released!
This release has been a long time coming, and many breaking changes have been made.
If you are an existing Lune user upgrading to this version, you will most likely be affected.
The full list of breaking changes can be found on below.
Breaking changes & additions
-
The behavior of
requirehas changed, according to the latest Luau RFCs and specifications.For the full details, feel free to read documentation here, otherwise, the most notable changes here are:
- Paths passed to require must start with either
./,../or@- require statements such asrequire("foo")will now error and must be changed torequire("./foo"). - The behavior of require from within
init.luauandinit.luafiles has changed - previouslyrequire("./foo")would resolve
to the file or directoryfooas a sibling of the init file, but will now resolve to the file or directoryfoowhich is a sibling of the parent directory of the init file.
To require files inside of the same directory as the init file, the new@selfalias must be used - likerequire("@self/foo").
- Paths passed to require must start with either
-
The main
lune runsubcommand will no longer sink flags passed to it -lune run --will now literally pass the string--as the first
value inprocess.args, and--is no longer necessary to be able to pass flag arguments such as--fooand-bproperly to your Lune programs. -
Two new process spawning functions -
process.createandprocess.exec- replace the previousprocess.spawnAPI. (#211)To migrate from
process.spawn, use the newprocess.execAPI which retains the same behavior as the old function, with slight changes in how thestdinoption is passed.The new
process.createfunction is a non-blocking process creation API and can be used to interactively
read and write to standard input and output streams of the child process.local child = process.create("program", { "first-argument", "second-argument" }) -- Writing to stdin child.stdin:write("Hello from Lune!") -- Reading partial data from stdout local data = child.stdout:read() print(data) -- Reading the full stdout local full = child.stdout:readToEnd() print(full)
-
Removed
net.jsonEncodeandnet.jsonDecode- please use the equivalentserde.encode("json", ...)andserde.decode("json", ...)instead -
WebSocket methods in
net.socketandnet.servenow use standard Lua method calling convention and colon syntax.
This meanssocket.send(...)is nowsocket:send(...),socket.close(...)is nowsocket:close(...), and so on. -
Various changes have been made to the Lune Rust crates:
Runtime::runnow returns a more useful value instead of anExitCode(#178)- All Lune standard library crates now export a
typedefsfunction that returns the source code for the respective standard library module type definitions - All Lune crates now depend on
mluaversion0.10or above - Most Lune crates have been migrated to the
smolandasync-*ecosystem instead oftokio, with a full migration expected soon (this will not break public types) - The
robloxcrate re-export has been removed from the mainlunecrate - please depend onlune-robloxcrate directly instead
Added
- Added functions for getting Roblox Studio locations to the
robloxstandard library (#284) - Added support for the
Contentdatatype in therobloxstandard library (#305) - Added support for
EnumIteminstance attributes in therobloxstandard library (#306) - Added support for RFC 2822 dates in the
datetimestandard library usingfromRfc2822(#285) - thefromIsoDate
function has also been deprecated (not removed yet) andfromRfc3339should instead be preferred for any new work. - Added a
readLinefunction to thestdiostandard library for reading line-by-line from stdin. - Added a way to disable JIT by setting the
LUNE_LUAU_JITenvironment variable tofalsebefore running Lune. - Added
process.endiannessconstant (#267)
Changed
- Documentation comments for several standard library properties have been improved (#248, #250)
- Error messages no longer contain redundant or duplicate stack trace information
- Updated to Luau version
0.663 - Updated to rbx-dom database version
0.670
Fixed
- Fixed deadlock in
stdio.formatcalls in__tostringmetamethods (#288) - Fixed
task.waitandtask.delaynot being guaranteed to yield when duration is set to zero or very small values - Fixed
__tostringmetamethods sometimes not being respected inprintandstdio.formatcalls