Skip to content

[infra] Contribution and PR docs - #3099

Merged
dcharkes merged 1 commit into
mainfrom
contributing-docs
Feb 16, 2026
Merged

dcharkes merged 1 commit into
mainfrom
contributing-docs

Conversation

@dcharkes

Copy link
Copy Markdown
Collaborator

Adding some contribution guidelines that should reduce churn for maintainers:

  1. We're not interested in AI slop that doesn't solve the related issue.
  2. Run the CI scripts locally to prevent having to go through the loop of maintainers having to approve and then the PR being red.

@github-actions github-actions Bot added the type-infra A repository infrastructure change or enhancement label Feb 16, 2026
Comment thread CONTRIBUTING.md Outdated
Each PR should aim to solve a specific issue. If the issue's requirements are
unclear, please ask for clarification on the GitHub issue before submitting a PR.

AI generated PRs that do not actually solve the issue will be closed. Please be

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Why is this specific to AI generated PRs? Wouldn't we do this for any PR that doesn't solve the issue it claims to solve?

Comment thread .github/PULL_REQUEST_TEMPLATE.md Outdated
Thanks for filing a pull request!
-->

- Thanks for your contribution! Please replace this text with a description of what this PR is changing or adding and why, list any relevant issues, and review the contribution guidelines below.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This sentence is just duplication: Line 2 already thanked people for their contribution and the rest repeats the content of the next three sections. Should we just remove it or replace it with a call to fill out the template below (instead of repeating its instructions)?

Comment thread .github/PULL_REQUEST_TEMPLATE.md Outdated

## Description

*Replace this paragraph with a description of what this PR is changing or adding, and why.*

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

hand-wavy nit: Can we put more emphasis on the why? It get's kinda lost here, but IMO is the most important part of the description.

Comment thread .github/PULL_REQUEST_TEMPLATE.md Outdated

## Related Issues

*List which issues are fixed by this PR. You must list at least one issue. Use the syntax `Fixes #1234`.*

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The "must" is a bit strong. We used to have that language on Flutter and people started filing issues to fix typos. That's not really helpful and just spams the system.

Comment thread .github/PULL_REQUEST_TEMPLATE.md Outdated

## PR Checklist

- [ ] The PR is actually solving the issue. AI generated PRs that don't solve the issue will be closed. Please be respectful of the maintainers' time. If it's not clear what the issue is, feel free to ask questions on the GitHub issue before submitting a PR.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

AI generated PRs that don't solve the issue will be closed.

Why is this limited to AI generated PRs? IMO, we should reject all contributions that don't solve the issue they claim to be solving.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

You're right it's not. I've removed it.

I have found this to be way more an issue with AI generated PRs though. So I kinda wanted to call that out? (Look at the external PRs filed on the FFIgen repo in the last couple of weeks and @liamappelbe's multiple replies that issues aren't actually solved.)

Comment thread .github/PULL_REQUEST_TEMPLATE.md Outdated
- [ ] All existing and new tests are passing. I added new tests to check the change I am making.
- [ ] I've run `dart tool/ci.dart --all` locally. This ensures the PR is formatted, has no lint errors, and ran all code generators. This applies to the packages part of the toplevel `pubspec.yaml` workspace.
- [ ] I have updated `CHANGELOG.md` for the relevant packages. (Not needed for small changes such as doc typos).
- [ ] I have [revved the pubspec package version](https://github.com/dart-lang/sdk/blob/main/docs/External-Package-Maintenance.md#making-a-change) if necessary.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

revved -> updated ?

(to be a little less slangy)

Comment thread CONTRIBUTING.md Outdated
Most changes should add an entry to the `CHANGELOG.md` of the affected packages.
Small changes such as documentation typos do not require a changelog entry.

When making a functional change, you may also need to [rev the pubspec package

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

rev -> update

Comment thread .github/PULL_REQUEST_TEMPLATE.md Outdated
- [ ] I've run `dart tool/ci.dart --all` locally. This ensures the PR is formatted, has no lint errors, and ran all code generators. This applies to the packages part of the toplevel `pubspec.yaml` workspace.
- [ ] I have updated `CHANGELOG.md` for the relevant packages. (Not needed for small changes such as doc typos).
- [ ] I have [revved the pubspec package version](https://github.com/dart-lang/sdk/blob/main/docs/External-Package-Maintenance.md#making-a-change) if necessary.
- [ ] I’ve reviewed the [contributor guide](https://github.com/dart-lang/native/blob/main/CONTRIBUTING.md) and applied the relevant portions to this PR.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

IMO, this should be the first entry in the check list. The rest of the checklist is more or less just enforcing that you did what's in the guide.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

I moved it last, thinking that people might not actually go and read it, but first is fine too, it'd be consistent with Flutters' template.

Comment thread .github/PULL_REQUEST_TEMPLATE.md Outdated

- [ ] The PR is actually solving the issue. AI generated PRs that don't solve the issue will be closed. Please be respectful of the maintainers' time. If it's not clear what the issue is, feel free to ask questions on the GitHub issue before submitting a PR.
- [ ] All existing and new tests are passing. I added new tests to check the change I am making.
- [ ] I've run `dart tool/ci.dart --all` locally. This ensures the PR is formatted, has no lint errors, and ran all code generators. This applies to the packages part of the toplevel `pubspec.yaml` workspace.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Let's put this one above the "All existing and new tests are passing" bullet since dart tool/ci.dart --all runs these tests.

Also: Just running the command as instructed by this bullet is not enough. They need to resolve all issues (i.e. failing tests) identified before uploading the PR.

@goderbauer goderbauer left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM

@dcharkes
dcharkes merged commit 14169ab into main Feb 16, 2026
7 checks passed
@dcharkes
dcharkes deleted the contributing-docs branch February 16, 2026 09:10
nikeokoronkwo added a commit to nikeokoronkwo/native that referenced this pull request Mar 15, 2026
commit 931267e
Author: Sigurd Meldgaard <[email protected]>
Date:   Fri Mar 13 12:26:14 2026 +0100

    [infra] Replace pub run with dart run (dart-lang#3000)

    Co-authored-by: Parker Lougheed <[email protected]>

commit ac1144e
Author: Daco Harkes <[email protected]>
Date:   Fri Mar 13 02:11:24 2026 -0700

    [record_use] Large ints (dart-lang#3227)

    Bug:

    * dart-lang#3220

commit 5cc737d
Author: Daco Harkes <[email protected]>
Date:   Fri Mar 13 00:57:31 2026 -0700

    [record_use] Double constants (dart-lang#3226)

commit d61b82a
Author: Liam Appelbe <[email protected]>
Date:   Thu Mar 12 12:59:43 2026 +1100

    [jnigen] Class bindings implement all super interfaces (dart-lang#3201)

commit c478dfe
Author: Daco Harkes <[email protected]>
Date:   Wed Mar 11 01:06:15 2026 -0700

    [record_use] Canonicalize and sort references (dart-lang#3216)

    Deduplicates identical references from the same loading unit.

    Also sorts the references.

    Closes:

    * dart-lang#3092

    AI transparency:

    * Generated with Gemini CLI. Architecture mine. Implementation AI. Iterated on with follow up prompts. Code has been reviewed by me.

commit ebcfec5
Author: Daco Harkes <[email protected]>
Date:   Wed Mar 11 00:51:37 2026 -0700

    [record_use] Change references to have a single loading unit (dart-lang#3215)

commit 4fd6bc1
Author: James Williams <[email protected]>
Date:   Sun Mar 8 16:17:30 2026 -0700

    [jnigen] Fix manual download - Integrate source download into temporary gradle script (dart-lang#3039)

commit d3978d3
Author: Liam Appelbe <[email protected]>
Date:   Mon Mar 9 08:51:21 2026 +1100

    [swiftgen] Add integration test for async protocol methods (dart-lang#3191)

commit 824ab62
Author: Daco Harkes <[email protected]>
Date:   Fri Mar 6 03:19:05 2026 -0800

    [infra] Release record_use, hooks, hooks_runner, and native_toolchain_c (dart-lang#3202)

commit dc51a9d
Author: Daco Harkes <[email protected]>
Date:   Fri Mar 6 00:16:29 2026 -0800

    [infra] Add `native_toolchain_ninja` to external packages (dart-lang#3205)

commit c503ded
Author: Daco Harkes <[email protected]>
Date:   Fri Mar 6 00:16:16 2026 -0800

    [record_use] Library documentation (dart-lang#3204)

commit 1c94455
Author: Daco Harkes <[email protected]>
Date:   Fri Mar 6 00:14:03 2026 -0800

    [infra] Only run formatting on dev (dart-lang#3203)

commit bc1b32f
Author: Gurleen Kaur <[email protected]>
Date:   Thu Mar 5 08:07:41 2026 +0530

    [ffigen] Move tmpDir into Context and use spaces in temp directory names (dart-lang#3029)

commit f208cfc
Author: Liam Appelbe <[email protected]>
Date:   Thu Mar 5 13:31:29 2026 +1100

    [jni] Support custom exceptions (dart-lang#3190)

commit f2faed2
Author: Daco Harkes <[email protected]>
Date:   Wed Mar 4 09:56:25 2026 -0800

    [record_use] Document what is supported (dart-lang#3197)

    Add some doc-comments about what language features are supported and what is recorded.

    This is not the final API yet, but this gives our doc comments a starting point.

    (Also, not all things have landed yet in the SDK, these docs are written as if they were.)

commit 6b1d651
Author: Daco Harkes <[email protected]>
Date:   Wed Mar 4 06:09:44 2026 -0800

    [infra] Revert "Disable Coveralls" (dart-lang#3195)

    This reverts commit 9c94314.

    They are back up: https://status.coveralls.io/

    Closes: dart-lang#3177

commit 31e70be
Author: Daco Harkes <[email protected]>
Date:   Wed Mar 4 06:04:53 2026 -0800

    [record_use] Remove record_use_internal.dart (dart-lang#3194)

commit ebb766b
Author: Daco Harkes <[email protected]>
Date:   Wed Mar 4 06:01:06 2026 -0800

    [infra] Disable non-working copyright health check (dart-lang#3196)

    Until dart-lang#3148 is addressed by @mosuem, lets reduce the noise.

commit fa77bf7
Author: Liam Appelbe <[email protected]>
Date:   Tue Mar 3 11:02:42 2026 +1100

    [jnigen] Extension types (dart-lang#3093)

commit 269d65c
Author: Hassnaa Mohamed <[email protected]>
Date:   Tue Mar 3 01:47:37 2026 +0200

    [swift2objc] feat:support swift tuples(return types) (dart-lang#3158)

commit 4a40b82
Author: Daco Harkes <[email protected]>
Date:   Mon Mar 2 04:27:10 2026 -0800

    [native_toolchain_c] Run less tests (dart-lang#3183)

commit be75c54
Author: Daco Harkes <[email protected]>
Date:   Mon Mar 2 02:01:16 2026 -0800

    [hooks_runner] Use dot shorthands (dart-lang#3179)

commit 9d488f6
Author: Daco Harkes <[email protected]>
Date:   Mon Mar 2 01:43:19 2026 -0800

    [hooks] Use dot shorthands (dart-lang#3176)

commit 205afff
Author: Liam Appelbe <[email protected]>
Date:   Mon Mar 2 11:34:20 2026 +1100

    [swift2objc] Fix nesting bugs (dart-lang#3173)

commit 77d80f4
Author: Daco Harkes <[email protected]>
Date:   Fri Feb 27 03:45:30 2026 -0800

    [native_toolchain_c] Apply dot shorthands (dart-lang#3165)

commit b2ec0d5
Author: Daco Harkes <[email protected]>
Date:   Fri Feb 27 03:44:33 2026 -0800

    [infra] Agent skill: Apply dot shorthands (dart-lang#3164)

commit ae6ca24
Author: Daco Harkes <[email protected]>
Date:   Fri Feb 27 03:44:06 2026 -0800

    [record_use] Use dot shorthands (dart-lang#3171)

commit 9c94314
Author: Daco Harkes <[email protected]>
Date:   Fri Feb 27 02:27:03 2026 -0800

    [infra] Disable Coveralls (dart-lang#3178)

commit 4e1412b
Author: Daco Harkes <[email protected]>
Date:   Thu Feb 26 07:25:58 2026 -0800

    [record_use] Constructor definitions (dart-lang#3170)

commit dd59094
Author: Daco Harkes <[email protected]>
Date:   Thu Feb 26 07:24:49 2026 -0800

    [hooks_runner] Automatically add recorded uses to hook dependencies (dart-lang#3169)

commit dbcba1d
Author: Daco Harkes <[email protected]>
Date:   Thu Feb 26 07:23:02 2026 -0800

    [record_use] Filter out nested constants from other packages (dart-lang#3167)

commit 754c69d
Author: Daco Harkes <[email protected]>
Date:   Thu Feb 26 03:50:30 2026 -0800

    [infra] Bump Dart API tool (dart-lang#3163)

commit 4c3db5f
Author: Nourhan H. <[email protected]>
Date:   Thu Feb 26 12:41:05 2026 +0300

    [swift2objc] fix: support optional primitives by boxing as wrapper types (dart-lang#3140)

commit 6bf102a
Author: Cairo09 <[email protected]>
Date:   Thu Feb 26 04:38:53 2026 +0530

    [ffigen] Added allocate constructor for native C structs (dart-lang#3097)

commit 173690d
Author: Liam Appelbe <[email protected]>
Date:   Thu Feb 26 06:40:38 2026 +0800

    [infra] Try AI suggested fix for flaky iOS install (dart-lang#3153)

commit 8c3f3ec
Author: Daco Harkes <[email protected]>
Date:   Wed Feb 25 05:04:29 2026 -0800

    [record_use] Deterministic serialization order (dart-lang#3156)

commit 4224cf5
Author: Daco Harkes <[email protected]>
Date:   Wed Feb 25 04:40:20 2026 -0800

    [record_use] Canonicalize before serialization (dart-lang#3155)

commit 3af7688
Author: Daco Harkes <[email protected]>
Date:   Wed Feb 25 03:35:30 2026 -0800

    [record_use] `Constant`s `_depth` and `_size` (dart-lang#3154)

commit 512fefc
Author: Daco Harkes <[email protected]>
Date:   Wed Feb 25 03:23:15 2026 -0800

    [record_use] Enum constant instances (dart-lang#3151)

commit 9eae830
Author: Liam Appelbe <[email protected]>
Date:   Wed Feb 25 17:33:25 2026 +0800

    [ffigen] Update docs about ObjC runtime types (dart-lang#3152)

commit aebbcec
Author: Cairo09 <[email protected]>
Date:   Wed Feb 25 07:55:15 2026 +0530

    [swift2objc] Inout params support (dart-lang#3132)

commit 592e429
Author: Daco Harkes <[email protected]>
Date:   Tue Feb 24 11:19:08 2026 -0800

    [record_use] Cache hash codes in Expando instances (dart-lang#3150)

    For dart-lang#3115, we want to store the depth of constant objects in an `Expando`, to avoid exponential runtime in deep constants.

    We already use hashmaps/hashsets on constants, and computing the hashCode is currently already recursing. To make computing the hashcode of a large `Recordings` linear, cache the `hashCode`s in an `Expando`.

    See the recommendation of this pattern in:

    * dart-lang/language#2225

commit 4cbd204
Author: Daco Harkes <[email protected]>
Date:   Tue Feb 24 10:23:49 2026 -0800

    [record_use] Public API deal with non-const (dart-lang#3147)

    This is not the final API yet, but the current internal API addresses some issues with the public API. So lets remove the old public API.

    Closes:

    * dart-lang#2718
    * dart-lang#2938

    The main design approach of using the new API, deep destructuring in a switch, and giving an error that you cannot tree-shake on failing to destructure:

    ```dart
          switch (call) {
            case CallWithArguments(
              positionalArguments: [StringConstant(value: final english), ...],
            ):
              // Shrink a translations file based on all the different translation
              // keys.
              print('Translating to pirate: $english');
            case _:
              throw UnsupportError('Cannot determine which translations are used.');
          }
    ```

    ```dart
          switch (ship) {
            case InstanceConstantReference(
              instanceConstant: InstanceConstant(
                fields: {'name': StringConstant(value: final name)},
              ),
            ):
              // Include the 3d model for this ship in the application but not
              // bundle the other ships.
              print('Pirate ship found: $name');
            case _:
              throw UnsupportedError('Cannot determine which ships are used.');
          }
    ```

commit 258d382
Author: Daco Harkes <[email protected]>
Date:   Tue Feb 24 01:18:45 2026 -0800

    [record_use] Simplify `Metadata` (dart-lang#3145)

commit 37f263c
Author: Daco Harkes <[email protected]>
Date:   Tue Feb 24 00:24:22 2026 -0800

    [record_use] Add SymbolConstant support (dart-lang#3139)

commit d4c6bf7
Author: Cairo09 <[email protected]>
Date:   Tue Feb 24 08:41:06 2026 +0530

    [jnigen] Throw actionable error for wrong Java version (dart-lang#3130)

commit 7d68fee
Author: Daco Harkes <[email protected]>
Date:   Mon Feb 23 03:50:41 2026 -0800

    [record_use] Enum value constants (dart-lang#3138)

commit 8b2540a
Author: Daco Harkes <[email protected]>
Date:   Mon Feb 23 02:38:54 2026 -0800

    [record_use] Constant Record Values (dart-lang#3137)

    The `package:record_use` side of:

    * dart-lang#3054

commit 4f1aa00
Author: Ryota Kobayashi <[email protected]>
Date:   Mon Feb 23 17:59:14 2026 +0900

    [ffigen] Fix SDK path detection for non-standard Xcode paths (dart-lang#3135)

commit dba74ff
Author: Daco Harkes <[email protected]>
Date:   Fri Feb 20 02:40:26 2026 -0800

    [record_use] Mark recorded classes as final (dart-lang#3131)

    At this point we don't want to support recording subtypes, we might allow this in the future, but we'll lock it down in the compiler for now.

commit f855083
Author: Daco Harkes <[email protected]>
Date:   Fri Feb 20 01:38:24 2026 -0800

    [record_use] Static call receiver (dart-lang#3127)

    A field for storing receiver (non) constant values for static calls.

    Extension methods and extension types have receivers for their instance calls - which are static calls.

    Issue:

    * dart-lang#2948

commit 8a97f6b
Author: Daco Harkes <[email protected]>
Date:   Fri Feb 20 01:13:15 2026 -0800

    [record_use] Serialize `NonConstant` in the constant pool (dart-lang#3126)

    This simplifies code. (Especially for the follow up PR: dart-lang#3127)

commit 4ff7f4c
Author: Daco Harkes <[email protected]>
Date:   Fri Feb 20 00:45:37 2026 -0800

    [record_use] Separate instance and static call recordings (dart-lang#3124)

commit 4df61e8
Author: Daco Harkes <[email protected]>
Date:   Fri Feb 20 00:41:03 2026 -0800

    [infra] Analyze the pubspec (dart-lang#3125)

commit e10223f
Author: Daco Harkes <[email protected]>
Date:   Thu Feb 19 09:41:34 2026 -0800

    [record_use] Smaller ints for hashcodes (dart-lang#3128)

commit 1ebc211
Author: Daco Harkes <[email protected]>
Date:   Thu Feb 19 05:36:05 2026 -0800

    [record_use] `LoadingUnit` Dart API (dart-lang#3123)

    Dart API for:

    * dart-lang#2979
    * dart-lang#3022

    In the future we might add the full graph of loading units if necessary.

commit 3879dca
Author: Daco Harkes <[email protected]>
Date:   Thu Feb 19 05:19:25 2026 -0800

    [record_use] Store multiple loading units (dart-lang#3122)

commit 1ef9fb1
Author: Daco Harkes <[email protected]>
Date:   Thu Feb 19 02:07:15 2026 -0800

    [record_use] JSON objects for loading units (dart-lang#3116)

    The storage part of:

    * dart-lang#2979

commit 5dbae2b
Author: Daco Harkes <[email protected]>
Date:   Wed Feb 18 12:16:06 2026 -0800

    [record_use] Move json strings in Dart to json files (dart-lang#3112)

    Lets have all test data in the same format. Simplifies things.

commit 1ccc1b7
Author: Daco Harkes <[email protected]>
Date:   Wed Feb 18 11:48:11 2026 -0800

    [record_use] Instance constant definitions (dart-lang#3121)

    Reland of dart-lang#3110 to the right branch. (GitHub sometimes rebases stacked PRs to main and sometimes doesn't...)

commit b88982b
Author: Daco Harkes <[email protected]>
Date:   Wed Feb 18 09:28:07 2026 -0800

    [record_use] Normalize definitions in JSON (dart-lang#3109)

    Move the definitions into their own toplevel index.

    Towards:

    * dart-lang#2867

    Implementation follows the design from:

    * dart-lang#3106

commit f36ecbf
Author: Daco Harkes <[email protected]>
Date:   Wed Feb 18 09:13:22 2026 -0800

    [record_use] Refactor (de)serialization order (dart-lang#3108)

commit 71b7a66
Author: Daco Harkes <[email protected]>
Date:   Wed Feb 18 07:43:25 2026 -0800

    [record_use] (De)serialization context (dart-lang#3107)

commit 1931ea5
Author: Daco Harkes <[email protected]>
Date:   Wed Feb 18 04:04:40 2026 -0800

    [infra] Skip generated packages from workspace check (dart-lang#3120)

commit 47fef8e
Author: Daco Harkes <[email protected]>
Date:   Wed Feb 18 02:23:05 2026 -0800

    [infra] Add license checker to ci script (dart-lang#3114)

commit 8bf375e
Author: Michael Goderbauer <[email protected]>
Date:   Wed Feb 18 10:04:11 2026 +0100

    [infra] add check to ensure all packages are accounted for in workspace (dart-lang#2969)

commit 938b861
Author: Daco Harkes <[email protected]>
Date:   Tue Feb 17 08:26:48 2026 -0800

    [record_use] Adopt `DefinitionKind` in test data (dart-lang#3118)

commit e2f959d
Author: Daco Harkes <[email protected]>
Date:   Tue Feb 17 00:37:20 2026 -0800

    [hooks_runner] Add missing license header (dart-lang#3113)

commit 5504267
Author: Daco Harkes <[email protected]>
Date:   Tue Feb 17 00:25:56 2026 -0800

    [hooks_runner] Slow test (dart-lang#3111)

commit a916dd3
Author: Daco Harkes <[email protected]>
Date:   Mon Feb 16 22:20:16 2026 -0800

    [hooks_runner] Add `CCACHE_` env variables to allowlist (dart-lang#3103)

commit 9d22ed8
Author: Hassnaa Mohamed <[email protected]>
Date:   Tue Feb 17 02:29:02 2026 +0200

    [swift2objc] feat: Generate implicit constructors for Swift structs (dart-lang#2940)

commit afcf7c4
Author: Cairo09 <[email protected]>
Date:   Tue Feb 17 05:52:41 2026 +0530

    [ffigen] allow isA (null) to return false for ObjCobject  (dart-lang#3059)

commit 2e84fb9
Author: Daco Harkes <[email protected]>
Date:   Mon Feb 16 04:32:38 2026 -0800

    [infra] Bump SDK version to 3.10.0 (dart-lang#3104)

commit 14169ab
Author: Daco Harkes <[email protected]>
Date:   Mon Feb 16 01:10:25 2026 -0800

    [infra] Contribution and PR docs (dart-lang#3099)

commit f08a85b
Author: Daco Harkes <[email protected]>
Date:   Mon Feb 16 01:06:49 2026 -0800

    [record_use] `Definition` rework JSON encoding (dart-lang#3091)

commit a44ec6c
Author: Daco Harkes <[email protected]>
Date:   Mon Feb 16 00:59:26 2026 -0800

    [hooks_runner] Fix flaky test (dart-lang#3101)

commit 7f2cfc4
Author: Daco Harkes <[email protected]>
Date:   Thu Feb 12 05:42:25 2026 -0800

    [infra] Add a `--fix` flag to the ci tool (dart-lang#3090)

    The generate task needs to go before the others in case it generates bad code.

commit ec7142f
Author: Daco Harkes <[email protected]>
Date:   Thu Feb 12 04:14:42 2026 -0800

    [infra] Add `dart_apitool` check to `ci.dart` (dart-lang#3082)

commit 6b1dfa7
Author: Daco Harkes <[email protected]>
Date:   Thu Feb 12 04:14:05 2026 -0800

    [infra] Toplevel analysis options (dart-lang#3084)

commit ed8075b
Author: Daco Harkes <[email protected]>
Date:   Thu Feb 12 04:08:31 2026 -0800

    [infra] Format tools directory (dart-lang#3089)

commit 91d34c6
Author: Daco Harkes <[email protected]>
Date:   Thu Feb 12 03:35:28 2026 -0800

    [record_use] Use `update_snippets.dart` (dart-lang#3087)

    Fix the doc comments in this package.

    * Fixes the docs to be up to date with current usage.
      * Adds a pirate themed API doc.
    * Ignores the use cases for now.
      * In the future we should make these full fledged examples in the examples/ dir.
    * Makes the snippets tool more powerful with anchors and nested snippets.

commit 73ba13f
Author: Daco Harkes <[email protected]>
Date:   Thu Feb 12 02:26:25 2026 -0800

    [record_use] Rework `Definition`s (dart-lang#3075)

    This change addresses the ambiguity issues in how we identify Dart definitions. The new API ensures we can unambiguously capture and reference all kinds of statically resolved symbols across classes, extensions, and extension types.

    Related bugs:

    * dart-lang#2888
    * dart-lang#3062
    Each segment in the path is now a `Name` object containing:
    * `name`: The string identifier.
    * `kind`: A `DefinitionKind` (e.g., `classKind`, `methodKind`, `getterKind`, `setterKind`, `operatorKind`).
    * `disambiguators`: A `Set<DefinitionDisambiguator>` used to distinguish between `static` and `instance` members, which is critical for extensions and extension types.

    The `kind` and `disambiguators` are null. Setting them non-null will be done in a follow up PR.
    Implemented a "smart" `toString()` that produces valid, URI-friendly strings for use in tooling and documentation.
    * **Format:** `library#kind:name@disambiguator::kind:name`
    * **Example:** `package:my_pkg/foo.dart#class:MyClass::method:myMethod@static`

    (Taken from discussions on dart-lang/language#4616)

commit 8fcc79b
Author: Daco Harkes <[email protected]>
Date:   Thu Feb 12 02:23:01 2026 -0800

    [pub_formats] Add missing dependency (dart-lang#3088)

commit ddb91fe
Author: Daco Harkes <[email protected]>
Date:   Thu Feb 12 02:11:35 2026 -0800

    [pub_formats] Add analysis options (dart-lang#3083)

commit cc90d34
Author: Daco Harkes <[email protected]>
Date:   Wed Feb 11 06:07:26 2026 -0800

    [ffi] Export leaked types (dart-lang#3081)

    This is causing flags on Dart API Tool runs. We should just export them.

commit 1bd5bb8
Author: Daco Harkes <[email protected]>
Date:   Wed Feb 11 05:45:58 2026 -0800

    [infra] Delete `repo_lint_rules` and remove `custom_lint` (dart-lang#3080)

commit cce2932
Author: Daco Harkes <[email protected]>
Date:   Wed Feb 11 05:07:47 2026 -0800

    [record_use] Rename `Identifier` to `Definition` (dart-lang#3076)

commit c6aca4e
Author: Daco Harkes <[email protected]>
Date:   Wed Feb 11 04:46:38 2026 -0800

    [hooks_runner] Increase test timeout (dart-lang#3079)

commit f1b6ca6
Author: Daco Harkes <[email protected]>
Date:   Wed Feb 11 04:21:00 2026 -0800

    [infra] Parallelize tool/ci.dart PubTask, GenerateTask, and ExampleTask (dart-lang#3074)

commit 19365f6
Author: Daco Harkes <[email protected]>
Date:   Wed Feb 11 04:20:39 2026 -0800

    [infra] Add `--fast` to `tool/ci.dart` (dart-lang#3073)

commit 0343aba
Author: Daco Harkes <[email protected]>
Date:   Wed Feb 11 04:17:24 2026 -0800

    [record_use] Require `package:` URIs in schema (dart-lang#3071)

    Add `package:` library check to the json schema and validator.

    Follow up of:

    * dart-lang#3069
    * dart-lang#2891

commit 0838740
Author: Daco Harkes <[email protected]>
Date:   Wed Feb 11 04:02:09 2026 -0800

    [record_use] Run validation in `Recordings.fromJson` (dart-lang#3078)

    dart-lang#3064 revealed we weren't ever running the validator.

    Refiling of:

    * dart-lang#3070

commit 9084e1d
Author: Daco Harkes <[email protected]>
Date:   Wed Feb 11 03:41:45 2026 -0800

    [record_use] Update test data to `package:` URIs and cleanup dart2js tests (dart-lang#3077)

commit 4689b4b
Author: Daco Harkes <[email protected]>
Date:   Wed Feb 11 00:45:40 2026 -0800

    [infra] ignore nested .dart_tool and other generated files (dart-lang#3066)

commit 898141e
Author: Hassnaa Mohamed <[email protected]>
Date:   Tue Feb 10 02:52:09 2026 +0200

    [swift2objc] feat: support operator overloading (dart-lang#2972)

commit 0e06fcf
Author: Daco Harkes <[email protected]>
Date:   Mon Feb 9 09:32:06 2026 -0800

    [record_use] Remove definition loading unit (dart-lang#3061)

    In `dart2js`, definitions currently include a `loading_unit` property which typically represents the "dominating" loading unit (the shared ancestor of all loading units where that definition is used).

    When assets are associated with a definition, using this definition-level `loading_unit` can lead to assets being loaded too early. For example, if a definition is used in two different deferred loading units, its dominating unit might be the main bundle. Loading the asset in the main bundle defeats the purpose of deferring it.

    To fix this, we want to postpone asset loading until one of the actual loading units that uses the definition is loaded. Since every recorded `Call` and `Instance` already includes its own `loading_unit`, the property on the `Definition` itself is redundant and misleading for the web backend.

    Closes: dart-lang#2986

    Issues to be addressed in follow up PRs:

    * dart-lang#3022
    * dart-lang#2888
    - Removed `loading_unit` from the `Definition` object in `record_use.schema.json`.
    - Updated `Recording` to use `identifier` directly as its key property.
    - Removed the `Definition` class. `Recordings` now uses `Identifier` as the primary key for the `callsForDefinition` and `instancesForDefinition` maps.
    - Added a `TODO` to `Identifier` to rename it to `Definition` in a future refactor ([dart-lang#2888](dart-lang#2888)).

commit 51d34eb
Author: Daco Harkes <[email protected]>
Date:   Fri Feb 6 09:30:37 2026 -0800

    [record_use] Support unsupported constants (dart-lang#3056)

commit 0819678
Author: Daco Harkes <[email protected]>
Date:   Thu Feb 5 07:21:07 2026 -0800

    [record_use] Add constructor invocations to recorded instances (dart-lang#3047)

    Refactored `InstanceReference` into a sealed class hierarchy to support constructor invocations and tear-offs alongside constant instances.
    - **Hierarchy:** Introduced `InstanceConstantReference`, `InstanceCreationReference`, and `ConstructorTearoffReference`.
    - **Schema:** Updated `record_use.schema.json` with a `type` discriminator for instances and regenerated `syntax.g.dart`.
    - **API:** Updated `Recordings` and `RecordedUsages` to handle the polymorphic types and improved semantic equality comparison.
    - **Migration:** Updated all JSON test data to include the required `"type": "constant"` field and ensured trailing newlines.
    - **Testing:** Added `test/instance_references_test.dart` and updated schema validation tests.

    Relevant issues:

    * dart-lang#2907
    * dart-lang#2911

commit 918a5a8
Author: Daco Harkes <[email protected]>
Date:   Thu Feb 5 06:55:55 2026 -0800

    [native_toolchain_c] Increase test timeout (dart-lang#3051)

commit 8b9b5a6
Author: Daco Harkes <[email protected]>
Date:   Thu Feb 5 06:45:20 2026 -0800

    [record_use] `Identifiers` must only have `package` uris (dart-lang#3045)

    Bug: dart-lang#2891

    (Needs a PR in the Dart SDK as well to avoid recording things outside package uris.)

commit e359106
Author: Daco Harkes <[email protected]>
Date:   Thu Feb 5 06:05:31 2026 -0800

    [record_use] Remove source locations (dart-lang#3043)

    This PR completely removes source location tracking (URI, line, column) from the `record_use` package.

    This type of debug information should not be needed for errors from a link hook if the APIs annotated with `@RecordUse()` are already annotated with `@mustBeConst`.

    Closes: dart-lang#3023

commit 4003fc3
Author: Daco Harkes <[email protected]>
Date:   Thu Feb 5 05:43:24 2026 -0800

    [hooks_runner] Filter recorded uses on definition package name (dart-lang#3041)

    Closes: dart-lang#3003

    This PR introduces filtering for `recorded_uses.json` passed to link hooks. Instead of providing all recorded usages from the entire application to every link hook, each hook now receives only the usages of definitions defined within its own package.

    -   **`NativeAssetsBuildRunner.link`**:
        -   Now parses the `resourceIdentifiers` (if provided).
        -   Iterates through each package in the build plan.
        -   Filters the `Recordings` to include only those where the definition belongs to the current package.
        -   Writes the filtered recordings to a `recorded_uses.json` file in the package's build directory.
        -   Passes this filtered file to the link hook input.

    -   **`Recordings` class**:
        -   Added a `filter({String? definitionPackageName})` method.
        -   This method filters `callsForDefinition` and `instancesForDefinition` based on the `importUri` of the definition, checking if it starts with `package:<definitionPackageName>/`.

    -   Added `pkgs/hooks_runner/test/build_runner/resources_test.dart`:
        -   **`simple_link linking`**: Verifies basic linking behavior.
        -   **`record_use_filtering linking`**: A complex test case involving three packages (`pirate_adventure`, `pirate_speak`, `pirate_technology`).
            -   `pirate_adventure` (the app) calls functions in the other two packages.
            -   The test verifies that the link hook for `pirate_speak` only receives recordings for `pirateSpeak` and `pirate_technology` only receives recordings for `useCannon`.
            -   Verifies that the output assets are correctly generated based on this filtered input (treeshaking simulation).

    -   Added test data in `pkgs/hooks_runner/test_data/`:
        -   `pirate_adventure`: The main application.
        -   `pirate_speak`: A library with a link hook that processes recordings.
        -   `pirate_technology`: Another library with a link hook.

    Previously, link hooks received the global set of recorded uses. This was inefficient and potentially leaked information between packages. By filtering the recordings, we ensure that:
    1.  Link hooks only process data relevant to them (treeshaking their own assets).
    2.  We avoid passing unnecessary data across package boundaries during the build process.

commit 9ebc083
Author: Daco Harkes <[email protected]>
Date:   Thu Feb 5 05:14:21 2026 -0800

    [record_use] Update MapConstant to support non-string keys (dart-lang#3037)

    Bug: dart-lang#2715

    Will require in implementation in the Dart SDK, and a manual roll due to breaking change in json format.

commit 4c78a12
Author: Daco Harkes <[email protected]>
Date:   Wed Feb 4 10:13:08 2026 -0800

    [record_use] Remove annotation recording examples (dart-lang#3046)

    Bug: dart-lang#2977

    Required to make https://dart-review.googlesource.com/c/sdk/+/478440 green.

commit 7324caf
Author: Daco Harkes <[email protected]>
Date:   Wed Feb 4 09:05:39 2026 -0800

    [native_toolchain_c] Don't require lld on `PATH` for MacOS -> Linux (dart-lang#3044)

commit 7eab15e
Author: Daco Harkes <[email protected]>
Date:   Wed Feb 4 08:44:42 2026 -0800

    [hooks_runner] Release 1.0.2 (dart-lang#3042)

commit 4581b84
Author: Liam Appelbe <[email protected]>
Date:   Wed Feb 4 14:08:54 2026 +1100

    [ffigen] Fix new use_null_aware_elements lint (dart-lang#3038)

commit ee71532
Author: Gurleen Kaur <[email protected]>
Date:   Wed Feb 4 04:15:19 2026 +0530

    [objective_c] Make autoReleasePool return callback value (dart-lang#3033)

commit 4c03068
Author: Daco Harkes <[email protected]>
Date:   Tue Feb 3 08:47:36 2026 -0800

    [hooks] Document hook env vars (dart-lang#3034)

commit 39e3e71
Author: Liam Appelbe <[email protected]>
Date:   Thu Jan 29 11:46:01 2026 +1100

    [objective_c] Prepare to publish (dart-lang#3024)

commit f67abb7
Author: Liam Appelbe <[email protected]>
Date:   Thu Jan 29 10:05:22 2026 +1100

    [ffigen] Fix transitive inclusion edge cases (dart-lang#2998)

commit 87f554b
Author: Liam Appelbe <[email protected]>
Date:   Thu Jan 29 09:25:29 2026 +1100

    [infra] Add needs-triage label to all new bugs (dart-lang#3015)

commit 8fe4664
Author: Hannes Winkler <[email protected]>
Date:   Wed Jan 28 12:25:44 2026 +0100

    [native_toolchain_c] fix unportable link arg (dart-lang#3005)

commit 8454e25
Author: Ponng <[email protected]>
Date:   Wed Jan 28 11:36:44 2026 +0800

    [objective_c] feat: Add minimum OS version flags to build script (dart-lang#3016)

commit 0a37fd3
Author: Liam Appelbe <[email protected]>
Date:   Wed Jan 28 09:05:38 2026 +1100

    [ffigen] Always sort bindings (dart-lang#3010)

commit 4298a2e
Author: Loïc Sharma <[email protected]>
Date:   Mon Jan 26 23:50:28 2026 -0800

    [ffi] Fix utf8.dart typo (dart-lang#3007)

commit 7d07eb5
Author: Liam Appelbe <[email protected]>
Date:   Fri Jan 23 10:43:39 2026 +1100

    [objective_c] Prepare to publish 9.2.4 (dart-lang#3002)

commit f77246f
Author: Marinko <[email protected]>
Date:   Fri Jan 23 00:30:51 2026 +0100

    [objective_c] - fix private pub dev issue (dart-lang#2996)

commit d296579
Author: Liam Appelbe <[email protected]>
Date:   Thu Jan 22 09:54:26 2026 +1100

    [native_toolchain_c] Use `-encryptable` linker flag (dart-lang#2982)

commit bf77b81
Author: Daco Harkes <[email protected]>
Date:   Wed Jan 21 12:27:39 2026 +0100

    [record_use] Integration test case for library-uris (dart-lang#2987)

commit 7f45c84
Author: Liam Appelbe <[email protected]>
Date:   Wed Jan 21 10:03:44 2026 +1100

    [ffigen] Fix block helper naming bug (dart-lang#2963)

commit 9c9b31c
Author: Liam Appelbe <[email protected]>
Date:   Wed Jan 21 09:39:24 2026 +1100

    [jnigen] Kotlin void suspend funcs now return Future<void> in Dart (dart-lang#2922)

commit 67ea02e
Author: Liam Appelbe <[email protected]>
Date:   Wed Jan 21 09:27:59 2026 +1100

    [objective_c] Fix a code signing bug (dart-lang#2975)

commit 34a8b7c
Author: Liam Appelbe <[email protected]>
Date:   Wed Jan 21 09:22:37 2026 +1100

    [native_toolchain_c] Clarify compiler/linker in cbuilder docs (dart-lang#2936)

commit 6127a50
Author: Daco Harkes <[email protected]>
Date:   Tue Jan 20 14:52:40 2026 +0100

    [hooks_runner] Remove unused dep from test data (dart-lang#2971)

commit 2f33e1a
Author: Daco Harkes <[email protected]>
Date:   Tue Jan 20 09:32:24 2026 +0100

    [record_use] Remove internal `fromJson` and `toJson` (dart-lang#2985)

    This PR only leaves the top level `Recordings` and `RecordedUsages` JSON APIs. All internal from and to json have been removed.

    The format uses normalization (with constant indices), which means the to and from JSON of parts of the format are not useful by themselves. Users should not try to use JSON serialization of parts of the format, only the full format.

    Closes: dart-lang#2901

    This will require a manual roll into the Dart SDK to migrate `Metadata.fromJson` constructor calls.

commit d5ff8ed
Author: Daco Harkes <[email protected]>
Date:   Tue Jan 20 09:26:37 2026 +0100

    [record_use] Use `snake_case` in JSON (dart-lang#2978)

commit c26f756
Author: Daco Harkes <[email protected]>
Date:   Mon Jan 19 14:12:23 2026 +0100

    [record_use] Record use cases (dart-lang#2976)

    Document all the `package:record_use` use cases and what features they would need from `package:record_use` and the compiler implementations populating the recorded use file.

commit 4fe954c
Author: Michael Goderbauer <[email protected]>
Date:   Fri Jan 16 15:28:17 2026 +0100

    Remove outdated TODO from root pubspec.yaml (dart-lang#2970)

commit d1bbeea
Author: Michael Goderbauer <[email protected]>
Date:   Fri Jan 16 14:36:15 2026 +0100

    [infra] add `ffi` to workspace (dart-lang#2966)

commit 30ee3d7
Author: Michael Goderbauer <[email protected]>
Date:   Fri Jan 16 10:57:55 2026 +0100

    Simplify native.yaml (dart-lang#2965)

    The "experiment" is no longer an experiment and now available on stable.

commit ab60a15
Author: Michael Goderbauer <[email protected]>
Date:   Fri Jan 16 09:11:05 2026 +0100

    [swift2objc] Fix link to repository in pubspec (dart-lang#2958)

commit 0c4cad2
Author: Michael Goderbauer <[email protected]>
Date:   Fri Jan 16 09:10:46 2026 +0100

    [infra] Bump ffigen,objective_c,swiftgen dependencies (dart-lang#2957)

commit b45b6ae
Author: Liam Appelbe <[email protected]>
Date:   Fri Jan 16 08:47:05 2026 +1100

    [swift2objc] Enum support (dart-lang#2955)

commit 20d244b
Author: Michael Goderbauer <[email protected]>
Date:   Thu Jan 15 11:13:08 2026 +0100

    [infra] Bump workspace dependencies (dart-lang#2956)

    Partially supersedes dart-lang#2833.

commit 35d02e8
Author: Liam Appelbe <[email protected]>
Date:   Thu Jan 15 09:42:03 2026 +1100

    [swiftgen] Integration tests for callbacks and protocols (dart-lang#2949)

commit c4f419c
Author: Daco Harkes <[email protected]>
Date:   Wed Jan 14 11:58:19 2026 +0100

    [record_use] Fix positional argument semantic equality (dart-lang#2950)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type-infra A repository infrastructure change or enhancement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants