Skip to content

[WIP] Begin moving towards invokable wire format #1690

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 31 commits into
base: main
Choose a base branch
from

Conversation

wycats
Copy link
Contributor

@wycats wycats commented Jan 23, 2025

No description provided.

Copy link
Contributor

github-actions bot commented Jan 23, 2025

This PRmain
Dev
603K └─┬ .
169K   ├── runtime
159K   ├── syntax
111K   ├── compiler
 67K   ├── opcode-compiler
 27K   ├── manager
 19K   ├── validator
 11K   ├── program
8.9K   ├── reference
7.2K   ├── destroyable
6.3K   ├── util
4.3K   ├── node
3.4K   ├── wire-format
3.4K   ├── global-context
1.0K   ├── vm
969B   ├── encoder
844B   ├── vm-babel-plugins
606B   └── owner
582K └─┬ .
169K   ├── runtime
159K   ├── syntax
100K   ├── compiler
 58K   ├── opcode-compiler
 27K   ├── manager
 19K   ├── validator
 11K   ├── program
8.9K   ├── reference
7.2K   ├── destroyable
6.3K   ├── util
4.3K   ├── node
3.4K   ├── global-context
2.5K   ├── wire-format
1.0K   ├── vm
969B   ├── encoder
844B   ├── vm-babel-plugins
606B   └── owner
Prod
237K └─┬ .
 69K   ├── syntax
 63K   ├── runtime
 52K   ├── compiler
 21K   ├── opcode-compiler
7.9K   ├── manager
4.8K   ├── program
4.0K   ├── validator
3.6K   ├── reference
2.4K   ├── util
2.3K   ├── wire-format
2.1K   ├── node
1.5K   ├── destroyable
737B   ├── vm
594B   ├── global-context
516B   ├── encoder
469B   ├── vm-babel-plugins
155B   └── owner
230K └─┬ .
 69K   ├── syntax
 63K   ├── runtime
 48K   ├── compiler
 18K   ├── opcode-compiler
7.9K   ├── manager
4.8K   ├── program
4.0K   ├── validator
3.6K   ├── reference
2.4K   ├── util
2.1K   ├── node
1.6K   ├── wire-format
1.5K   ├── destroyable
737B   ├── vm
594B   ├── global-context
516B   ├── encoder
469B   ├── vm-babel-plugins
155B   └── owner

@wycats wycats force-pushed the feature/emit-fn-calls branch 2 times, most recently from cc230f3 to 4625e5e Compare February 6, 2025 07:26
@wycats wycats force-pushed the feature/emit-fn-calls branch from a5f57d9 to cddc4dc Compare February 12, 2025 02:52
@wycats wycats force-pushed the feature/emit-fn-calls branch from 6a5d569 to 87e01ac Compare February 20, 2025 03:18
NullVoxPopuli added a commit that referenced this pull request Feb 20, 2025
NullVoxPopuli added a commit that referenced this pull request Feb 20, 2025
NullVoxPopuli added a commit that referenced this pull request Feb 20, 2025
NullVoxPopuli added a commit that referenced this pull request Feb 20, 2025
NullVoxPopuli added a commit that referenced this pull request Feb 20, 2025
@github-actions github-actions bot mentioned this pull request Feb 20, 2025
@wycats wycats force-pushed the feature/emit-fn-calls branch 3 times, most recently from 0683762 to 9ba08a7 Compare February 23, 2025 08:37
@github-actions github-actions bot mentioned this pull request Mar 4, 2025
@wycats wycats force-pushed the feature/emit-fn-calls branch 2 times, most recently from 2b97bec to ecadfb7 Compare March 19, 2025 01:04
wycats added 11 commits March 25, 2025 09:51
- Eliminate special high-level opcodes
- By modifying the statements and expressions to use the new encoder APIs,
it will be easier for us to emit the encoder calls directly from the
wire format
- Split modifier and component to resolved variants
- Clarify args wire format
- Separate kinds of component invocations
- Disentangle the types of helpers
- Streamline components
The only remaining test failures are syntax errors that need updated
test assertions.
- `strict-mode.ts` now type checks.
- Next step: deriving error messages from the validation contexts.
wycats and others added 18 commits March 25, 2025 09:54
TODO: consolidate error propagation through elements.
The only remaining failures are now outdated error message tests.
Syntax errors are now notes in the AST rather than reported during parse
time, and are reported at compile-time. To make it possible to get
syntax errors purely from `@glimmer/syntax`, this commit adds a verifier
to `@glimmer/syntax` that validates the standalone `ASTv2` and reports
errors that it finds.

To get a complete picture, you really _do_ want to wait until
compile-time, which can report keyword-specific errors, but this makes
it possible to get a sense of the syntax errors without involving the
compiler.

This is all in service of making errors reported by `@glimmer/syntax`
fully forgiving.
@NullVoxPopuli NullVoxPopuli force-pushed the feature/emit-fn-calls branch from ecadfb7 to ccb6165 Compare March 25, 2025 13:56
@NullVoxPopuli NullVoxPopuli requested a review from Copilot March 26, 2025 21:11
Copy link

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR begins transitioning towards an invokable wire format by updating integration test harnesses, refining event recording and cache behavior, and adding comprehensive documentation and pseudocode for the Glimmer reactivity system.

  • Updated integration tests with new CSS and improved event recording handling.
  • Refactored build configuration to adjust the typescript helper and updated the benchmark environment to reference layout compilation.
  • Added extensive documentation and pseudocode for the reactive system, including tags, primitives, and composition.

Reviewed Changes

Copilot reviewed 171 out of 176 changed files in this pull request and generated no comments.

Show a summary per file
File Description
packages/@glimmer-workspace/integration-tests/lib/setup-harness.ts Added import for new CSS tweaks.
packages/@glimmer-workspace/integration-tests/lib/render-test.ts Extended test interfaces and recording event functionality.
packages/@glimmer-workspace/integration-tests/lib/modes/jit/delegate.ts Minor whitespace adjustment.
packages/@glimmer-workspace/integration-tests/lib/compile.ts Updated precompileJSON call with meta information.
packages/@glimmer-workspace/integration-tests/index.ts Updated exports to include additional test helpers.
packages/@glimmer-workspace/build/lib/config.js Refactored typescript function signature and adjusted SWC settings.
packages/@glimmer-workspace/benchmark-env/lib/benchmark/util.ts Replaced reference to compilable with layout in entry compilation.
guides/reactivity/* New and updated documentation and pseudocode for the reactivity system.
Files not reviewed (5)
  • .prototools: Language not supported
  • .vscode/settings.json: Language not supported
  • package.json: Language not supported
  • packages/@glimmer-workspace/build/package.json: Language not supported
  • packages/@glimmer-workspace/integration-tests/lib/harness/tweaks.css: Language not supported
Comments suppressed due to low confidence (3)

packages/@glimmer-workspace/build/lib/config.js:410

  • The typescript() function signature was changed by removing the package parameter. Please ensure all callers have been updated accordingly and update any related documentation or JSDoc to reflect this change.
              typescript(env),

packages/@glimmer-workspace/benchmark-env/lib/benchmark/util.ts:5

  • The property reference was changed from 'compilable' to 'layout'. Verify that 'layout' exists on entry and that this change is consistent with the intended API to avoid compilation issues.
  return unwrapHandle(entry.layout!.compile(context));

packages/@glimmer-workspace/integration-tests/lib/render-test.ts:112

  • [nitpick] This diff introduces private class fields (using the '#' syntax). Ensure that the target TypeScript/JavaScript environment fully supports private fields to avoid runtime errors.
  #events: RecordedEvent[] = [];

@reteps
Copy link

reteps commented Apr 10, 2025

Any way that I can contribute? In the context of #1666, this would be very helpful.

@NullVoxPopuli
Copy link
Contributor

idk, basically what's left here is that I need to add tests, and make sure CI goes green

NullVoxPopuli added a commit to NullVoxPopuli/ember.js that referenced this pull request Apr 25, 2025
NullVoxPopuli added a commit to NullVoxPopuli/ember.js that referenced this pull request Apr 25, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants