Commit graph

764 commits

Author SHA1 Message Date
Arseny Kapoulkine
5a21c41363
Update STATUS.md 2022-03-24 09:26:42 -07:00
Alexander McCord
7ab76e582c
RFC: Do not implement non-nil postfix ! operator. (#420)
This is a meta-RFC. I'd like to propose to remove the postfix `!` operator from the language.

I'd like to argue that this operator will eventually become useless and can only be used incorrectly at some point in the future, and that there are likely ways for them to be sound without having to reach for the `!` hammer.

With that, I present these counterarguments:

Shortcoming <span>#</span>1: Refinements does not apply to the block after `return`/`break`/`continue`.

```lua
if not x or not y then return end
-- both x and y are truthy
```

This will be solved by implementing control flow analysis where it'd apply the inverse of the condition leading up to the control transfer statement to the rest of the scope.

Shortcoming <span>#</span>2: Type checker is not aware of the actual state of various locations.

```lua
type Foo = { x: { y: number }? }?
local foo: Foo = { x = { y = 5 } }
print(foo.x.y) -- prints 5 at runtime, type checker warns on this
```

This will be solved by implementing type states where it would inspect the initialization sites as well as assignments to know their actual states. That is, rather than trusting the type annotation `Foo` as the state which gets us far enough, we'd start seeing these type annotations as a subtype constraint for the location `foo`.

---

If there are other use cases not covered in this message, we should talk about that and see if there exists an alternative direction that can solve these use cases soundly.
2022-03-24 08:38:16 -07:00
Alexander McCord
2f15079642
Fold in rationale for making else branch mandatory in if-then-else expressions. (#426)
This has been discussed but just didn't get incorporated into the RFC.
2022-03-23 16:53:52 -07:00
Alan Jeffrey
7721955ba5
Prototyping: add semantic subtyping (#424)
Adds subtyping to strict mode.
2022-03-23 15:02:57 -05:00
Arseny Kapoulkine
362428f8b4
Sync to upstream/release/519 (#422) 2022-03-17 17:46:04 -07:00
Arseny Kapoulkine
57faf7aaf2 Lower the stack limit to make tests pass in debug 2022-03-17 17:33:23 -07:00
Arseny Kapoulkine
eee60dcaf3 Merge branch 'upstream' into merge 2022-03-17 17:07:51 -07:00
Arseny Kapoulkine
305f255a1f Merge branch 'master' into merge 2022-03-17 17:07:07 -07:00
Arseny Kapoulkine
adecd84067 Sync to upstream/release/519 2022-03-17 17:06:25 -07:00
Luca Salmin
4fdead5e3c
yield from interrupt #287 (#413)
Co-authored-by: luca salmin <luca.salmin@studioevil.com>
2022-03-14 11:43:40 -07:00
Arseny Kapoulkine
fe71aff7af
Update library.md 2022-03-14 10:30:49 -07:00
Arseny Kapoulkine
a44b7906b6
Sync to upstream/release/518 (#419) 2022-03-11 08:55:02 -08:00
Arseny Kapoulkine
bf74a347c3 Merge branch 'upstream' into merge 2022-03-11 08:36:10 -08:00
Arseny Kapoulkine
6667df02df Merge branch 'master' into merge 2022-03-11 08:36:08 -08:00
Arseny Kapoulkine
feea507be3 Sync to upstream/release/518 2022-03-11 08:31:18 -08:00
Arseny Kapoulkine
dbdf91f3ca
Sync to upstream/release/517 (#408) 2022-03-04 08:36:33 -08:00
Arseny Kapoulkine
75e66f13c5 Merge branch 'upstream' into merge 2022-03-04 08:19:48 -08:00
Arseny Kapoulkine
600b8a483a Merge branch 'master' into merge 2022-03-04 08:19:44 -08:00
Arseny Kapoulkine
9bfecab5ba Sync to upstream/release/517 2022-03-04 08:19:20 -08:00
Lily Brown
6c923b8802
Prototyping: strings (#390) 2022-03-02 15:26:58 -08:00
Alan Jeffrey
c5477d522d
Prototyping strict mode (#399)
* First cut of strict mode

Co-authored-by: Lily Brown <lily@lily.fyi>
2022-03-02 16:02:51 -06:00
vegorov-rbx
d277cc2c3b
Luau Recap: February 2022 (#403)
* Luau Recap: February 2022

* Rebuild pages

* Fixed Markdown linter warnings, converted tabs to spaces and added a note on 'select' optimization

* Apply suggestions from code review

Co-authored-by: Alexander McCord <11488393+alexmccord@users.noreply.github.com>

* Added information about new lint

* Update docs/_posts/2022-02-28-luau-recap-february-2022.md

Co-authored-by: Alexander McCord <11488393+alexmccord@users.noreply.github.com>

Co-authored-by: Alexander McCord <11488393+alexmccord@users.noreply.github.com>
2022-03-02 06:27:35 -08:00
Arseny Kapoulkine
898c0501d1
Update STATUS.md
Add table.clone
2022-02-28 14:16:35 -08:00
Arseny Kapoulkine
5e8242aeda
RFC: table.clone (#362) 2022-02-28 14:15:33 -08:00
Arseny Kapoulkine
fb11ca00f4
Update README.md
linenoise -> isocline
2022-02-28 10:50:23 -08:00
Arseny Kapoulkine
db3a8a2f0f
Update prototyping.yml (#398)
This limits the scope of prototyping action to PRs to prototyping branch to minimize the GHA cost / latency, as cabal install sometimes takes forever
2022-02-24 17:08:54 -08:00
Arseny Kapoulkine
c7eca27909
Sync to upstream/release/516 (#397) 2022-02-24 15:53:37 -08:00
Arseny Kapoulkine
8984f4984c Merge branch 'upstream' into merge 2022-02-24 15:16:35 -08:00
Arseny Kapoulkine
2a549cfbad Merge branch 'master' into merge 2022-02-24 15:16:33 -08:00
Arseny Kapoulkine
a8eabedd57 Sync to upstream/release/516 2022-02-24 15:15:41 -08:00
Lily Brown
0bd21762ae
Prototype bools and relational operators (#387)
Prototypes booleans and relational operators.

As part of this I removed `FFI/Data/Bool.agda`, because it was getting in the way - we already use `Agda.Builtin.Bool` instead for other cases.
2022-02-24 11:17:46 -08:00
Petri Häkkinen
0bc7c51afc
Lua API: add return types to table getters (#389)
Co-authored-by: Petri Häkkinen <petrih@rmd.remedy.fi>
2022-02-23 10:03:58 -08:00
Lily Brown
cd18adc20e
Prototyping: binary operations (#377)
Adds support for binary operations on numbers.
2022-02-22 15:52:56 -08:00
James Napora
1334db600f
Update grammar.md (#379) 2022-02-22 11:24:15 -08:00
Arseny Kapoulkine
3c42b3a013
Revert "Mark singleton types RFC as implemented (#370)" (#378)
This reverts commit 731e197757.
2022-02-19 10:57:29 -08:00
Alan Jeffrey
fc33b0c702
Fix evaluation rule for function application (#375) 2022-02-18 16:47:23 -06:00
Alan Jeffrey
0b783d8932
Add Properties.Equality to prototyping (#376) 2022-02-18 16:47:04 -06:00
Lily Brown
7f867ac166
Prototyping: numbers (#368)
Adds number support to the prototype. Binary operators are next.
2022-02-18 11:09:00 -08:00
Arseny Kapoulkine
a9bdce6cc0
Rename tests to tests.py (#374) 2022-02-18 10:04:38 -08:00
Arseny Kapoulkine
5b78465059
Sync to upstream/release/514 (#372) 2022-02-17 17:18:01 -08:00
Lily Brown
1ac64af484
Prototyping: Revise CI (#371)
Introduces a test runner with test cases. Also significantly overhauls the GHA configuration.
2022-02-17 17:15:33 -08:00
Arseny Kapoulkine
6aaaafcc8d
Add documentation for upcoming CommentDirective lint (#361) 2022-02-17 16:58:43 -08:00
Arseny Kapoulkine
1f679b08b8 Merge branch 'upstream' into merge 2022-02-17 16:42:11 -08:00
Arseny Kapoulkine
eea0374fad Merge branch 'master' into merge 2022-02-17 16:42:08 -08:00
Arseny Kapoulkine
4930409516 Sync to upstream/release/515 2022-02-17 16:41:20 -08:00
Alexander McCord
731e197757
Mark singleton types RFC as implemented (#370) 2022-02-17 16:16:31 -08:00
Arseny Kapoulkine
e49a0fd4cd
Mark default type parameters RFC as implemented (#369) 2022-02-17 16:14:35 -08:00
Arseny Kapoulkine
e541e19f44
Create RFC status tracking document (#363)
This tracks status of all unimplemented RFCs in one central place. Hopefully we won't forget to update this when new RFCs are added!
2022-02-15 18:37:02 -08:00
Lily Brown
c8d6dc2758
Revise GHA workflows for prototyping (#367)
Changed the GHA workflows to:
- Not run `build` and `release` workflows for PRs that only affect `prototyping/`
- Run `prototyping` workflow when PRs affect `Analysis/**`, `Ast/**`, or the `luau-ast` source files
2022-02-15 14:24:51 -08:00
Lily Brown
f0c9d84461
Prototyping: Parse type annotations (#366)
Parses type annotations from the JSON output of `luau-ast`.
2022-02-15 14:10:43 -08:00