Commit Graph

297 Commits

Author SHA1 Message Date
Arseny Kapoulkine 2f989fc049
Sync to upstream/release/512 (#330)
- Improve refinement support for unions, in particular it's now possible to implement tagged unions as a union of tables where individual branches use a string literal type for one of the fields.
- Fix `string.split` type information
- Optimize `select(_, ...)` to run in constant time (~2.7x faster on VariadicSelect benchmark)
- Improve debug line information for multi-line assignments
- Improve compilation of table literals when table keys are constant expressions/variables
- Use forward GC barrier for `setmetatable` which slightly accelerates GC progress
2022-01-27 15:46:05 -08:00
Vlad Marica 4b96f7efc1
luau-analyze: Add support for reading source code from stdin (#325)
Co-authored-by: Arseny Kapoulkine <arseny.kapoulkine@gmail.com>
2022-01-25 08:25:01 -08:00
Arseny Kapoulkine 8fe95c9963
Sync to upstream/release/511 (#324)
- TableOperations lint now includes a warning for table.create(N, {}) (which is likely a mistake since the table is shared by all entries)
- Type checker now type checks #v when v is a union
- Parser now rejects sources that consists of a single unfinished long comment
- Work around significant MSVC 2022 performance regression, bringing it more or less in line with MSVC 2019
- Compiler now predicts array size for newly allocated tables when the table is filled in a short loop
- Small improvements in compilation throughput (~2% faster)
- Implement paged sweeper for GC which improves sweep throughput 2-3x and reduces memory consumption by 8 bytes per object (once it is stabilized we will see additional 8 bytes per object of savings)
- Improve Repl Tab completion
- Repl now supports -i (interactive mode to run code in context of a script's environment) and -On (to control optimization flags)
2022-01-21 09:00:19 -08:00
Shiro 478a3da634
Update copyright years. (#323) 2022-01-20 09:42:49 -08:00
JohnnyMorganz 4e5ff99582
Improve Grammar documentation (#315) 2022-01-20 08:27:19 -08:00
dcope-rbx 49ce5096a4
Fixed a couple spelling mistakes in markdown files. (#316) 2022-01-17 09:44:31 -08:00
Halalaluyafail3 497d625f73
Fix some mistakes in the documentation (#314) 2022-01-14 13:42:49 -08:00
Arseny Kapoulkine 32c39e2162
Sync to upstream/release/510 (#313) 2022-01-14 08:20:09 -08:00
Arseny Kapoulkine b2af550b08
Update grammar.md
Add forgotten quotes around 'type'; reported by @Dionysusnu
2022-01-13 15:23:18 -08:00
Arseny Kapoulkine d6ba106be6
Update compatibility.md
Add a note about function identity
2022-01-12 11:56:46 -08:00
T 'Filtered' C abf9fc2754
Update compatibility.md to split coroutine.close from lua_resetthread (#309)
Co-authored-by: Arseny Kapoulkine <arseny.kapoulkine@gmail.com>
2022-01-12 11:50:25 -08:00
rafa_br34 b7f78f4997
MSVC warning C4244 fixes (#308)
Co-authored-by: Arseny Kapoulkine <arseny.kapoulkine@gmail.com>
2022-01-12 10:05:31 -08:00
Arseny Kapoulkine b7a7b92d12
Update syntax.md
Remove confusing block because it reads as if we *do* support this syntax if you aren't reading carefully.
2022-01-11 13:24:56 -08:00
Arseny Kapoulkine a23b467485
Add turbofish discussion to generic function RFC (#300) 2022-01-07 11:07:36 -08:00
Arseny Kapoulkine 287b46e6a7
Mark bidirectional ascription RFC as implemented (#305) 2022-01-07 11:07:22 -08:00
Arseny Kapoulkine b5e338325b
Mark coroutine.close RFC as implemented (#304) 2022-01-07 08:52:33 -08:00
Arseny Kapoulkine d50b079325
Sync to upstream/release/509 (#303)
- Rework transaction log used for type checking which should result in more robust type checking internals with fewer bugs
- Reduce the amount of memory consumed by type checker on large module graphs
- Type checker now errors on attempts to change the type of imported module fields
- The return type of newproxy is now any (fixes #296)
- Implement new number printing algorithm (Schubfach) which makes tostring() produce precise (round-trippable) and short decimal output up to 10x faster
- Fix lua_Debug::linedefined to point to the line with the function definition instead of the first statement (fixes #265)
- Fix minor bugs in Tab completion in Repl
- Repl now saves/restores command history in ~/.luau_history
2022-01-06 17:46:53 -08:00
Arseny Kapoulkine d323237b6c
Sync to upstream/release/508 (#301)
This version isn't for release because we've skipped some internal
numbers due to year-end schedule changes, but it's better to merge
separately.
2022-01-06 15:26:14 -08:00
Alan Jeffrey 82587bef29
RFC: Fix an unsoundness issue around stripping optional properties (#276)
* Fix an unsoundness issue around stripping optional properties

Co-authored-by: vegorov-rbx <75688451+vegorov-rbx@users.noreply.github.com>
2022-01-06 12:48:09 -06:00
Arseny Kapoulkine 73b7bcb2da
docs: Move Luau.Web.js fetch to the end of the page
This was moved in the CodeMirror change, but that may break Module setup in the embedded <script> block, so move it back.
2022-01-04 15:04:25 -08:00
Arseny Kapoulkine fa35884e5b
Update library.md
A few small tweaks and fixes.
2021-12-27 13:08:56 -08:00
Arseny Kapoulkine 6203bf6ac5
Update grammar.md
Remove TOC & mark page as wide.
2021-12-27 12:51:23 -08:00
Arseny Kapoulkine 65177c425c
Update grammar.md
This changes the grammar to follow the EBNF rules more rigorously, most significantly quoting all keywords.
2021-12-27 12:48:58 -08:00
Arseny Kapoulkine d079201a6e Fix repeated calls to print() clearing output 2021-12-20 15:44:51 -08:00
Arseny Kapoulkine fedd9a5f78 docs: Fix label syntax 2021-12-20 15:40:38 -08:00
boyned//Kampfkarren 5e7648947b
RFC: Safe navigation operator (#142)
Co-authored-by: Alexander McCord <11488393+alexmccord@users.noreply.github.com>
2021-12-20 15:38:15 -08:00
Arseny Kapoulkine 9e7e779c02
Quality of life improvements to web demo (#297)
- Upgrade CodeMirror to 5.65
- Enable matching paren highlighting via an addon
- Remove extra buttons and replace clear output with a checkbox
- Highlight error line on parsing/execution error
- Change demo layout to wide to increase available width
2021-12-20 15:36:41 -08:00
Pelanyo Kamara 019eeeb853
Add CodeMirror Editor for Web Demo (#228)
Also remove timestamps from output
2021-12-15 09:23:26 -08:00
Arseny Kapoulkine f2e6a8f4a5
Sync to upstream/release/507-pre (#286)
This doesn't contain all changes for 507 yet but we might want to do the
Luau 0.507 release a bit earlier to end the year sooner.

Changes:

- Type ascription (::) now permits casts between related types in both directions, allowing to refine or loosen the type (RFC #56)
- Fix type definition for tonumber to return number? since the input string isn't guaranteed to contain a valid number
- Fix type refinements for field access via []
- Many stability fixes for type checker
- Provide extra information in error messages for type mismatches in more cases
- Improve performance of type checking for large unions when union members are string literals
- Add coverage reporting support to Repl (--coverage command line argument) and lua_getcoverage C API
- Work around code signing issues during Makefile builds on macOS
- Improve performance of truthiness checks in some cases, particularly on Apple M1, resulting in 10-25% perf gains on qsort benchmark depending on the CPU/compiler
- Fix support for little-endian systems; IBM s390x here we go!
2021-12-10 14:05:05 -08:00
Arseny Kapoulkine 88be067c0b
Switch coverage build to checkout@v2 (#285)
Attempt to fix coverage builds by using checkout@v2 instead of v1 which might fix the detacthed HEAD issue.

On the off chance it doesn't, add extra logging around git specifically.
2021-12-09 17:50:29 -08:00
Rerumu 12ef94df5e
Add shebang support (#149)
Co-authored-by: Arseny Kapoulkine <arseny.kapoulkine@gmail.com>
2021-12-09 12:37:48 -08:00
JohnnyMorganz 2e6a2090c3
Add Grammar documentation (#266)
Co-authored-by: Alexander McCord <11488393+alexmccord@users.noreply.github.com>
Co-authored-by: Arseny Kapoulkine <arseny.kapoulkine@gmail.com>
2021-12-08 09:17:28 -08:00
vegorov-rbx 71adace16e
RFC: Amend 'Default type alias type parameters' for type pack parameters (#238)
* Do not allow regular type assignment to a type pack as a default parameter

* With type pack support in type aliases, this second form with an empty list is now supported

* Update rfcs/syntax-default-type-alias-type-parameters.md

Co-authored-by: Alan Jeffrey <403333+asajeffrey@users.noreply.github.com>

* Update syntax-default-type-alias-type-parameters.md

Even more examples

Co-authored-by: Alan Jeffrey <403333+asajeffrey@users.noreply.github.com>
2021-12-08 04:21:47 -08:00
Braeden 2807dcb758
Update JsonEncoder.cpp (#279)
fix JsonEncoder so that AstArray elems are given commas seperating them
2021-12-07 08:14:35 -08:00
Slappy826 3eff1b214e
Fix spelling error of 'ROBLOX' (#277)
* Remove roblox prefix on comment
2021-12-07 08:14:24 -08:00
Arseny Kapoulkine 9488f2379d
Mark bit32.count* RFC as implemented 2021-12-03 11:10:41 -08:00
Arseny Kapoulkine f63ddae898
Enable LuauActivateBeforeExec to activate the fix early (#275)
Fixes #259.
2021-12-03 10:40:31 -08:00
Arseny Kapoulkine 7257f34d89
Update CONTRIBUTING.md
The language around creating RFCs seems a bit redundant now.
2021-12-02 23:08:45 -08:00
Arseny Kapoulkine 32fb6d10a7
Sync to upstream/release/506 (#270)
- Fix some cases where type checking would overflow the native stack
- Improve autocomplete behavior when assigning a partially written function call (not currently exposed through command line tools)
- Improve autocomplete type inference feedback for some expressions where previously the type would not be known
- Improve quantification performance during type checking for large types
- Improve type checking for table literals when the expected type of the table is known because of a type annotation
- Fix type checking errors in cases where required module has errors in the resulting type
- Fix debug line information for multi-line chained call sequences (Add function name information for "attempt to call a nil value" #255)
- lua_newuserdata now takes 2 arguments to match Lua/LuaJIT APIs better; lua_newuserdatatagged should be used if the third argument was non-0.
- lua_ref can no longer be used with LUA_REGISTRYINDEX to prevent mistakes when migrating Lua FFI (Inconsistency with lua_ref #247)
- Fix assertions and possible crashes when executing script code indirectly via metatable dispatch from lua_equal/lua_lessthan/lua_getfield/etc. (Hitting a crash in an assert after lua_equal is called. #259)
- Fix flamegraph scripts to run under Python 2
2021-12-02 22:41:04 -08:00
Arseny Kapoulkine f5ec6df7ba
Update build.yml
Disable continue-on-error for coverage because hiding the error actually makes it difficult to debug now :)
2021-12-02 15:55:06 -08:00
Lily Brown 864221e667
November 2021 Luau recap (#264)
Co-authored-by: Arseny Kapoulkine <arseny.kapoulkine@gmail.com>
2021-12-02 13:22:02 -08:00
Arseny Kapoulkine 2aff9bb859
Add documentation for bit32.count* and coroutine.close (#268) 2021-12-02 11:36:40 -08:00
Petri Häkkinen d2bf2870e8
Add lua_isvector, luaL_checkvector and luaL_optvector (#261)
Co-authored-by: Petri Häkkinen <petrih@rmd.remedy.fi>
Co-authored-by: Arseny Kapoulkine <arseny.kapoulkine@gmail.com>
2021-12-01 11:03:08 -08:00
Petri Häkkinen bf6cf4a69e
Fix luau_load 'env' to work with absolute stack index & add lua_absindex (#263)
Co-authored-by: Petri Häkkinen <petrih@rmd.remedy.fi>
2021-12-01 10:44:38 -08:00
kunitoki 35e497b533
Allow reconfiguring VM defaults (#260)
Co-authored-by: Lucio Asnaghi <lucio.asnaghi@king.com>
2021-11-30 17:03:18 -08:00
Arseny Kapoulkine 955f9fa754
Update index.md
Studio => luau-analyze
2021-11-30 15:26:28 -08:00
vegorov-rbx 6801c65090
Documentation for type packs (#257)
* Documentation for type packs

* Update docs/_pages/typecheck.md

Co-authored-by: Arseny Kapoulkine <arseny.kapoulkine@gmail.com>

* Add a note about the difference between ...T and T...

Fix a typo at the start as well.

Co-authored-by: Arseny Kapoulkine <arseny.kapoulkine@gmail.com>
2021-11-30 14:00:23 -08:00
Arseny Kapoulkine f185e9f5db
Update performance.md (#252)
Add documentation for closure allocation elision.
2021-11-30 08:21:11 -08:00
Petri Häkkinen 677994b243
Fix: luaL_sandbox leaves value on the stack (#253)
Co-authored-by: Petri Häkkinen <petrih@rmd.remedy.fi>
2021-11-30 08:14:28 -08:00
Petri Häkkinen 9aa9ff12dd
Add LUA_GCCOUNTB option for lua_gc (#254)
Co-authored-by: Petri Häkkinen <petrih@rmd.remedy.fi>
2021-11-30 08:14:12 -08:00
Lana Octavia f86d4c6995
Removed LUALIB_API from source file method bodies (#235) 2021-11-29 08:14:06 -08:00
Baileyeatspizza 222f03bbda
Update lmathlib.cpp (#241) 2021-11-29 08:13:55 -08:00
Arseny Kapoulkine dd02420f70
Update build.yml
Enable debug mode in coveralls action to diagnose https://github.com/lemurheavy/coveralls-public/issues/1595
2021-11-23 11:44:18 -08:00
vegorov-rbx 6b2b179aa6
Mark 'Type alias type packs' RFC as implemented (#237) 2021-11-23 10:03:20 -08:00
Arseny Kapoulkine 5740686124
Ignore errors during upload coverage (#236) 2021-11-23 08:26:28 -08:00
Alexander McCord 6958716ccd
RFC: String interpolation (#165) 2021-11-22 14:59:38 -08:00
Tiffany Bennett a26024fb4b
Use latest release url (#227) 2021-11-22 12:54:27 -08:00
Arseny Kapoulkine 5961261a1c
Add web workflow to build Repl with Emscripten (#222)
This also separates Emscripten build into a new target / source to make
it more decoupled.
2021-11-22 09:59:15 -08:00
petrihakkinen 2740f69f32
Expand vectors to 4 components using compile time switch (#214)
Co-authored-by: Petri Häkkinen <petrih@rmd.remedy.fi>
Co-authored-by: Arseny Kapoulkine <arseny.kapoulkine@gmail.com>
2021-11-22 07:42:33 -08:00
Pelanyo Kamara a5bb3ee2af
Add luaL_checkboolean and luaL_optboolean (#221)
Co-authored-by: Arseny Kapoulkine <arseny.kapoulkine@gmail.com>
2021-11-22 07:42:11 -08:00
Arseny Kapoulkine cecd50fb06
Update navigation.yml
Remove leftover comments
2021-11-21 20:12:21 -08:00
Arseny Kapoulkine ffed184562
Update navigation.yml
Add demo to top-level nav
2021-11-21 20:12:08 -08:00
Arseny Kapoulkine 2fa5b9c329
Update repl.html
Try using a release artifact
2021-11-21 20:07:44 -08:00
Josh Soref ec8a5643cc
Improve readability (#206)
Co-authored-by: Josh Soref <jsoref@users.noreply.github.com>
Co-authored-by: Arseny Kapoulkine <arseny.kapoulkine@gmail.com>
2021-11-19 10:45:53 -08:00
Arseny Kapoulkine 100710c9f6
Update README.md
Switch to luau_compile and specify env for luau_load
2021-11-19 08:15:56 -08:00
Arseny Kapoulkine 3f1508c83a
Sync to upstream/release/505 (#216)
- Improve error recovery during type checking
- Initial (not fully complete) implementation for singleton types (RFC RFC: Singleton types #37)
- Implement a C-friendly interface for compiler (luacode.h)
- Remove C++ features from lua.h (removed default arguments from luau_load and lua_pushcfunction)
- Fix lua_breakpoint behavior when enabled=false
- Implement coroutine.close (RFC RFC: coroutine.close #88)

Note, this introduces small breaking changes in lua.h:

- luau_load env argument is now required, pass an extra 0
- lua_pushcfunction now must be called with 3 arguments; if you were calling it with 2 arguments, pass an extra NULL; if you were calling it with 4, use lua_pushcclosure.

These changes are necessary to make sure lua.h can be used from pure C - the future release will make it possible by adding an option to luaconf.h to change function name mangling to be C-compatible. We don't anticipate breaking the FFI interface in the future, but this change was necessary to restore C compatibility.

Closes #121
Fixes #213
2021-11-19 08:10:07 -08:00
Arseny Kapoulkine 4265e58ad1
RFC: coroutine.close (#88) 2021-11-17 06:49:49 -08:00
ccuser44 09ad884ca8
Update SECURITY.md (#209)
In some use cases it is better to encrypt the bytecode, while on others you may want to do both.
2021-11-17 06:42:14 -08:00
ccuser44 a02086260b
Added note to docs about not using os.difftime for new work (#210)
Co-authored-by: Arseny Kapoulkine <arseny.kapoulkine@gmail.com>

Fixes #194.
2021-11-17 06:42:04 -08:00
Alan Jeffrey 59366ad7f8
Clarified parsing properties of tables in the presence of singleton types (#207) 2021-11-16 14:48:01 -06:00
fpliu e7a443daa8
Fix Android linking issue with libpthread (#203) 2021-11-15 15:01:36 -08:00
Arseny Kapoulkine 6558c271dd
Create SECURITY.md
Fixes #197.
2021-11-15 12:04:26 -08:00
ThePotato d11e8277c2
Fixes IFTODT error while compiling from an android device (#199)
Co-authored-by: Arseny Kapoulkine <arseny.kapoulkine@gmail.com>
2021-11-12 06:58:34 -08:00
Arseny Kapoulkine b7d26b371a
Use -Werror in CI only (#201)
We keep getting compat reports for warnings in various compiler
versions. While we can keep merging PRs to resolve these warnings, it
would be nice if the users of other compilers or compiler versions weren't
blocked on us fixing this.

As such, this change disables Werror by default and only enables it when
requested, which happens in CI in test builds.
2021-11-12 06:56:25 -08:00
Arseny Kapoulkine 70ffc8a01d
RFC: Do not allow method call on string literals (#145) 2021-11-12 06:54:00 -08:00
Arseny Kapoulkine d47b2f1dfe
Sync to upstream/release/504 (#200)
- Type mismatch errors now show detailed information for compound types, highlighting the mismatching component
- Fix string.pack bug on ARM when packing negative numbers using unsigned formats
- Implement bit32.countlz/countrz (RFC RFC: bit32.countlz/countrz #89)
- Minor compiler throughput optimization (~2% faster compilation)
- Improve transpiler behavior for edge cases and better test coverage (not exposed through CLI at the moment)
- Improve error recovery when parsing invalid assignments
- Build fixes for fuzzing targets
2021-11-12 06:27:34 -08:00
LoganDark a6a2b86c9b
Fix build on Clang 12 by removing unused variables (#195) 2021-11-11 06:29:59 -08:00
dcope-rbx 68fb2bdfde
Addressed typecasting documentation feedback (#192) 2021-11-10 11:53:43 -08:00
dcope-rbx 4957812b62
Added documentation related to typecasting (#191) 2021-11-10 09:26:20 -08:00
Pelanyo Kamara aec8fbfd0f
Feature: Web REPL using Emscripten (#138)
Currently doesn't include the new page into navigation since we aren't building the .js files anywhere.
2021-11-10 08:40:46 -08:00
LoganDark d6b3346f58
move static_assert from ltable.h to ltable.cpp (#189) 2021-11-09 17:02:46 -08:00
Arseny Kapoulkine f3468be92b Small follow code cleanup for Repl.cpp 2021-11-09 15:11:52 -08:00
NotDSF 3ba0bdf708
Save bytecode to file through CLI (#170)
Using --compile=binary it's now possible to produce binary bytecode so that it can be compiled offline and loaded into the VM.
2021-11-09 14:54:53 -08:00
Arseny Kapoulkine fe1bf43b54
RFC: bit32.countlz/countrz (#89)
Co-authored-by: vegorov-rbx <75688451+vegorov-rbx@users.noreply.github.com>
2021-11-09 10:40:14 -08:00
LoganDark 9523670e63
Remove Roblox-specific mutable globals (#185)
Instead the code that calls the compiler needs to use Compiler::mutableGlobals to disable GETIMPORT optimization.
2021-11-09 07:06:25 -08:00
LoganDark 773fb5bd6f
Don't allow registry to be set to readonly (#184) 2021-11-08 15:30:51 -08:00
Arseny Kapoulkine 7816f2596f
Update config.yml
Rename "help and support" to "questions"
2021-11-08 15:01:57 -08:00
LoganDark 7ca09ec100
Fix lbuiltins.cpp comment (#180) 2021-11-08 11:09:30 -08:00
LoganDark f1649a43cd
Add userdata to lua_Callbacks (#168) 2021-11-08 08:26:03 -08:00
Arseny Kapoulkine 46244d2ea7
Update getting-started.md
Update file extension from .lua to .luau

Contributes to #97
2021-11-07 23:21:34 -08:00
ThePotato f27580c74b
Fix linux typo in README.md "Linus" to "Linux" (#174) 2021-11-07 23:19:28 -08:00
Arseny Kapoulkine 16753a78f4
Update navigation.yml
Add GitHub link to top bar
2021-11-07 08:07:57 -08:00
Arseny Kapoulkine c6de3bd2e4
Update sandbox.md
Remove section on thread identity: this is not part of open-source Luau and as such is now confusing.
2021-11-05 19:50:29 -07:00
Rerumu 96b1707f87
Fix CLI analysis reporting wrong file names (#146) 2021-11-05 19:11:56 -07:00
Roni N. (Kittenz) 1e1d1f58e9
Look for `.luau` before `.lua` in REPL & Analyze (#97) (#124)
As discussed in the issue, Luau has evolved from Lua to the point
where a new default extension `.luau` would be needed.

This change makes the REPL and Analyze look for `.luau`
extension first and if not found, fall back to `.lua`.
2021-11-05 19:11:26 -07:00
Rerumu 6342913533
Fix small assert ordering (#143) 2021-11-05 14:38:08 -07:00
bmcq-0 ad9b47b72f
Fold length operations when argument is a constant string (#141)
Co-authored-by: Arseny Kapoulkine <arseny.kapoulkine@gmail.com>
2021-11-05 13:24:30 -07:00
Arseny Kapoulkine a80fc93646
Fix unused variable treatment (#139)
Right now our CMake infra specifies -Wno-unused only for GCC builds, but Makefile specifies it for all builds.
The intent has been to use it just for GCC, so we now do that by detecting the compiler version - this should
equalize the behavior across different types of builds.

Separately, latest version of clang appears to expose an unused variable that clang-10 was okay with, so fix that. (change from upstream)
2021-11-05 12:39:27 -07:00
Arseny Kapoulkine aea1f6a718
Update README.md
Add `make` commandline as well.
2021-11-05 10:16:28 -07:00
Arseny Kapoulkine 279855df91
Sync to upstream/release/503 (#135)
- A series of major optimizations to type checking performance on complex
programs/types (up to two orders of magnitude speedup for programs
involving huge tagged unions)
- Fix a few issues encountered by UBSAN (and maybe fix s390x builds)
- Fix gcc-11 test builds
- Fix a rare corner case where luau_load wouldn't wake inactive threads
which could result in a use-after-free due to GC
- Fix CLI crash when error object that's not a string escapes to top level
- Fix Makefile suffixes on macOS

Co-authored-by: Rodactor <rodactor@roblox.com>
2021-11-05 08:47:21 -07:00