diff --git a/README.md b/README.md index 22db413c..974d0f70 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,25 @@ --- -`react-lua` is a 1:1 translation of upstream [React](https://github.com/facebook/react), and is highly-turned for both performance and correctness. +`react-lua` is a 1:1 translation of upstream [React](https://github.com/facebook/react) from JavaScript into Lua, and is highly-turned for both performance and correctness. +When possible, upstream flowtype and definitely-typed types have been translated into Luau type annotations. The major and minor version of React Lua is aligned to the upstream used for the translation, except where noted. Due to the close nature of the two implementations, most article, video, or blog post that gives React JS advice can be applied to `react-lua` -- modulo language differences, of course. + +Some experimental React JS 17 features, that are removed in React JS 18 and are not implemented in `react-lua`: +* Blocks +* SuspenseList +* FundamentalComponent +* `createEventHandle` API + +Some React JS 17 features not yet translated in `react-lua`: +* Server Components +* (De)Hydration +* Persistence +* The `supportsMutation = false` option in the ReactHostConfig +* ScopeComponent +* some specific `Text` behavior not needed by the currently ported renderers + +If you'd like to help port some of the missing features, search for `unimplemented` in the code. + +While `react-lua` is written in the Luau dialect, bundler tools such as [DarkLua](https://darklua.com/) can be used to transpile the implementation code to Lua code that is compatible with other Lua-based runtimes. Note that other Lua runtimes may need a new renderer implementation to be created, a [reference](packages/react-roblox) renderer based on the [React Native](https://github.com/facebook/react/tree/main/packages/react-native-renderer) renderer is included in this repository. TODO: Write the rest of the README. diff --git a/packages/react-debug-tools/wally.toml b/packages/react-debug-tools/wally.toml index c1797d80..5c981a35 100644 --- a/packages/react-debug-tools/wally.toml +++ b/packages/react-debug-tools/wally.toml @@ -1,13 +1,13 @@ [package] name = 'jsdotlua/react-debug-tools' description = 'https://github.com/grilme99/CorePackages' -version = '17.0.2' +version = '17.0.3' license = 'MIT' authors = ['Roblox Corporation'] registry = 'https://github.com/UpliftGames/wally-index' realm = 'shared' [dependencies] -LuauPolyfill = 'jsdotlua/luau-polyfill@1.2.3' +LuauPolyfill = 'jsdotlua/luau-polyfill@=1.2.3' ReactReconciler = 'jsdotlua/react-reconciler@17.0.2' Shared = 'jsdotlua/shared@17.0.2' diff --git a/packages/react-devtools-shared/wally.toml b/packages/react-devtools-shared/wally.toml index 6f9b434e..e46aaf09 100644 --- a/packages/react-devtools-shared/wally.toml +++ b/packages/react-devtools-shared/wally.toml @@ -1,14 +1,14 @@ [package] name = 'jsdotlua/react-devtools-shared' description = 'https://github.com/grilme99/CorePackages' -version = '17.0.2' +version = '17.0.3' license = 'MIT' authors = ['Roblox Corporation'] registry = 'https://github.com/UpliftGames/wally-index' realm = 'shared' [dependencies] -LuauPolyfill = 'jsdotlua/luau-polyfill@1.2.3' +LuauPolyfill = 'jsdotlua/luau-polyfill@=1.2.3' React = 'jsdotlua/react@17.0.2' ReactDebugTools = 'jsdotlua/react-debug-tools@17.0.2' ReactIs = 'jsdotlua/react-is@17.0.2' diff --git a/packages/react-is/wally.toml b/packages/react-is/wally.toml index 8e80c08f..9503abe8 100644 --- a/packages/react-is/wally.toml +++ b/packages/react-is/wally.toml @@ -1,7 +1,7 @@ [package] name = 'jsdotlua/react-is' description = 'https://github.com/grilme99/CorePackages' -version = '17.0.2' +version = '17.0.3' license = 'MIT' authors = ['Roblox Corporation'] registry = 'https://github.com/UpliftGames/wally-index' diff --git a/packages/react-reconciler/wally.toml b/packages/react-reconciler/wally.toml index 866d5948..f1354c7b 100644 --- a/packages/react-reconciler/wally.toml +++ b/packages/react-reconciler/wally.toml @@ -1,14 +1,14 @@ [package] name = 'jsdotlua/react-reconciler' description = 'https://github.com/grilme99/CorePackages' -version = '17.0.2' +version = '17.0.3' license = 'MIT' authors = ['Roblox Corporation'] registry = 'https://github.com/UpliftGames/wally-index' realm = 'shared' [dependencies] -LuauPolyfill = 'jsdotlua/luau-polyfill@1.2.3' +LuauPolyfill = 'jsdotlua/luau-polyfill@=1.2.3' Promise = 'evaera/promise@4.0.0' React = 'jsdotlua/react@17.0.2' Scheduler = 'jsdotlua/scheduler@17.0.2' diff --git a/packages/react-roblox/wally.toml b/packages/react-roblox/wally.toml index 024b6f37..27496d70 100644 --- a/packages/react-roblox/wally.toml +++ b/packages/react-roblox/wally.toml @@ -1,14 +1,14 @@ [package] name = 'jsdotlua/react-roblox' description = 'https://github.com/grilme99/CorePackages' -version = '17.0.2' +version = '17.0.3' license = 'MIT + Apache 2.0' authors = ['Roblox Corporation'] registry = 'https://github.com/UpliftGames/wally-index' realm = 'shared' [dependencies] -LuauPolyfill = 'jsdotlua/luau-polyfill@1.2.3' +LuauPolyfill = 'jsdotlua/luau-polyfill@=1.2.3' React = 'jsdotlua/react@17.0.2' ReactReconciler = 'jsdotlua/react-reconciler@17.0.2' Scheduler = 'jsdotlua/scheduler@17.0.2' diff --git a/packages/react/wally.toml b/packages/react/wally.toml index bd219d0f..d2fef87e 100644 --- a/packages/react/wally.toml +++ b/packages/react/wally.toml @@ -1,12 +1,12 @@ [package] name = 'jsdotlua/react' description = 'https://github.com/grilme99/CorePackages' -version = '17.0.2' +version = '17.0.3' license = 'MIT + Apache 2.0' authors = ['Roblox Corporation'] registry = 'https://github.com/UpliftGames/wally-index' realm = 'shared' [dependencies] -LuauPolyfill = 'jsdotlua/luau-polyfill@1.2.3' +LuauPolyfill = 'jsdotlua/luau-polyfill@=1.2.3' Shared = 'jsdotlua/shared@17.0.2' diff --git a/packages/roact-compat/wally.toml b/packages/roact-compat/wally.toml index ce5419b8..fb387b81 100644 --- a/packages/roact-compat/wally.toml +++ b/packages/roact-compat/wally.toml @@ -1,14 +1,14 @@ [package] name = 'jsdotlua/roact-compat' description = 'https://github.com/grilme99/CorePackages' -version = '17.0.2' +version = '17.0.3' license = 'MIT + Apache 2.0' authors = ['Roblox Corporation'] registry = 'https://github.com/UpliftGames/wally-index' realm = 'shared' [dependencies] -LuauPolyfill = 'jsdotlua/luau-polyfill@1.2.3' +LuauPolyfill = 'jsdotlua/luau-polyfill@=1.2.3' React = 'jsdotlua/react@17.0.2' ReactRoblox = 'jsdotlua/react-roblox@17.0.2' Shared = 'jsdotlua/shared@17.0.2' diff --git a/packages/scheduler/wally.toml b/packages/scheduler/wally.toml index 2449c683..2b31e4c0 100644 --- a/packages/scheduler/wally.toml +++ b/packages/scheduler/wally.toml @@ -1,12 +1,12 @@ [package] name = 'jsdotlua/scheduler' description = 'https://github.com/grilme99/CorePackages' -version = '17.0.2' +version = '17.0.3' license = 'MIT' authors = ['Roblox Corporation'] registry = 'https://github.com/UpliftGames/wally-index' realm = 'shared' [dependencies] -LuauPolyfill = 'jsdotlua/luau-polyfill@1.2.3' +LuauPolyfill = 'jsdotlua/luau-polyfill@=1.2.3' Shared = 'jsdotlua/shared@17.0.2' diff --git a/packages/shared/wally.toml b/packages/shared/wally.toml index ad827c4e..a079c76c 100644 --- a/packages/shared/wally.toml +++ b/packages/shared/wally.toml @@ -1,11 +1,11 @@ [package] name = 'jsdotlua/shared' description = 'https://github.com/grilme99/CorePackages' -version = '17.0.2' +version = '17.0.3' license = 'MIT' authors = ['Roblox Corporation'] registry = 'https://github.com/UpliftGames/wally-index' realm = 'shared' [dependencies] -LuauPolyfill = 'jsdotlua/luau-polyfill@1.2.3' +LuauPolyfill = 'jsdotlua/luau-polyfill@=1.2.3'