Skip to content
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

Add package:record_use with JSON storage #1479

Draft
wants to merge 13 commits into
base: main
Choose a base branch
from
Draft

Conversation

mosuem
Copy link
Member

@mosuem mosuem commented Aug 29, 2024

Update: Landing as https://dart-review.googlesource.com/c/sdk/+/383340 instead.

While this feature is under development, we should not over-complicate things and go with JSON as a storage format. Once we have a working feature behind an experimental flag, we should re-evaluate if other formats such as protobuf make more sense. Same goes for the API, which we should evolve while testing use cases.

This package will be imported into the SDK and used by the vm and dart2js.

After this is merged, import this package into g3, and then merge the corresponding SDK CL.

TODO: update https://dart-review.googlesource.com/c/sdk/+/369620 to this PR.

cc @dcharkes


  • I’ve reviewed the contributor guide and applied the relevant portions to this PR.
Contribution guidelines:

Note that many Dart repos have a weekly cadence for reviewing PRs - please allow for some latency before initial review feedback.

@github-actions github-actions bot added the type-infra A repository infrastructure change or enhancement label Aug 29, 2024
Copy link

github-actions bot commented Aug 29, 2024

Package publishing

Package Version Status Publish tag (post-merge)
package:record_use 0.1.0 ready to publish record_use-v0.1.0
package:ffi 2.1.3 already published at pub.dev
package:ffigen 14.0.0-wip WIP (no publish necessary)
package:jni 0.11.0 already published at pub.dev
package:jnigen 0.11.0 already published at pub.dev
package:native_assets_cli 0.7.4-wip WIP (no publish necessary)
package:objective_c 2.0.0-wip WIP (no publish necessary)
package:swift2objc 0.0.1-wip WIP (no publish necessary)
package:swiftgen 0.0.1-wip WIP (no publish necessary)

Documentation at https://github.com/dart-lang/ecosystem/wiki/Publishing-automation.

Copy link
Collaborator

@dcharkes dcharkes left a comment

Choose a reason for hiding this comment

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

Does this superseed #1248 and #1117? Can those be closed?

(Refraining from reviewing the format and API.)

.github/workflows/record_use.yaml Show resolved Hide resolved
.github/workflows/record_use.yaml Outdated Show resolved Hide resolved
pkgs/record_use/.github/workflows/test.yaml Outdated Show resolved Hide resolved
pkgs/record_use/README.md Outdated Show resolved Hide resolved
@mosuem
Copy link
Member Author

mosuem commented Aug 30, 2024

Does this superseed #1248 and #1117? Can those be closed?

Yes and maybe - we still need a PR to expose the recorded usages to link hooks. But I might just refile one.

Copy link

github-actions bot commented Sep 3, 2024

PR Health

Changelog Entry ✔️
Package Changed Files

Changes to files need to be accounted for in their respective changelogs.

API leaks ✔️

The following packages contain symbols visible in the public API, but not exported by the library. Export these symbols or remove them from your publicly visible API.

Package Leaked API symbols
License Headers ✔️
// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
Files
no missing headers

All source files should start with a license header.

Unrelated files missing license headers
Files
pkgs/ffigen/example/libclang-example/generated_bindings.dart
pkgs/ffigen/example/shared_bindings/generate.dart
pkgs/ffigen/example/shared_bindings/lib/generated/a_gen.dart
pkgs/ffigen/example/shared_bindings/lib/generated/a_shared_b_gen.dart
pkgs/ffigen/example/shared_bindings/lib/generated/base_gen.dart
pkgs/ffigen/example/simple/generated_bindings.dart
pkgs/ffigen/lib/src/header_parser/clang_bindings/clang_bindings.dart
pkgs/ffigen/test/collision_tests/expected_bindings/_expected_decl_decl_collision_bindings.dart
pkgs/ffigen/test/collision_tests/expected_bindings/_expected_decl_symbol_address_collision_bindings.dart
pkgs/ffigen/test/collision_tests/expected_bindings/_expected_decl_type_name_collision_bindings.dart
pkgs/ffigen/test/collision_tests/expected_bindings/_expected_reserved_keyword_collision_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_comment_markup_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_dart_handle_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_enum_int_mimic_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_forward_decl_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_functions_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_imported_types_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_native_func_typedef_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_opaque_dependencies_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_packed_structs_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_regress_384_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_struct_fptr_fields_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_typedef_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_unions_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_varargs_bindings.dart
pkgs/ffigen/test/large_integration_tests/_expected_cjson_bindings.dart
pkgs/ffigen/test/large_integration_tests/_expected_libclang_bindings.dart
pkgs/ffigen/test/large_integration_tests/_expected_sqlite_bindings.dart
pkgs/ffigen/test/native_test/_expected_native_test_bindings.dart
pkgs/jni/lib/src/lang/jcharacter.dart
pkgs/jni/lib/src/third_party/generated_bindings.dart
pkgs/jni/lib/src/third_party/global_env_extensions.dart
pkgs/jni/lib/src/third_party/jni_bindings_generated.dart
pkgs/jnigen/android_test_runner/lib/main.dart
pkgs/jnigen/example/in_app_java/lib/android_utils.dart
pkgs/jnigen/example/kotlin_plugin/example/lib/main.dart
pkgs/jnigen/example/kotlin_plugin/lib/kotlin_bindings.dart
pkgs/jnigen/example/kotlin_plugin/lib/kotlin_plugin.dart
pkgs/jnigen/example/pdfbox_plugin/lib/pdfbox_plugin.dart
pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocument.dart
pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocumentInformation.dart
pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/_package.dart
pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/text/PDFTextStripper.dart
pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/text/_package.dart
pkgs/jnigen/lib/src/bindings/descriptor.dart
pkgs/jnigen/lib/src/elements/elements.g.dart
pkgs/jnigen/test/jackson_core_test/third_party/bindings/com/fasterxml/jackson/core/_package.dart
pkgs/jnigen/tool/command_runner.dart
pkgs/swift2objc/lib/src/config.dart
pkgs/swift2objc/lib/src/generate_wrapper.dart
pkgs/swift2objc/lib/src/generator/_core/utils.dart
pkgs/swift2objc/lib/src/generator/generator.dart
pkgs/swift2objc/lib/src/generator/generators/class_generator.dart
pkgs/swift2objc/lib/src/parser/parsers/declaration_parsers/parse_property_declaration.dart
pkgs/swift2objc/lib/src/transformer/_core/unique_namer.dart
pkgs/swift2objc/lib/src/transformer/_core/utils.dart
pkgs/swift2objc/lib/src/transformer/transformers/transform_property.dart
Package publish validation ✔️
Package Version Status
package:record_use 0.1.0 ready to publish
package:ffi 2.1.3 already published at pub.dev
package:ffigen 14.0.0-wip WIP (no publish necessary)
package:jni 0.11.0 already published at pub.dev
package:jnigen 0.11.0 already published at pub.dev
package:native_assets_cli 0.7.4-wip WIP (no publish necessary)
package:objective_c 2.0.0-wip WIP (no publish necessary)
package:swift2objc 0.0.1-wip WIP (no publish necessary)
package:swiftgen 0.0.1-wip WIP (no publish necessary)

Documentation at https://github.com/dart-lang/ecosystem/wiki/Publishing-automation.

Copy link
Member

@mkustermann mkustermann left a comment

Choose a reason for hiding this comment

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

I think this is going to need a number of iterations, but let's start landing & iterating.

lgtm with comments

pkgs/record_use/README.md Outdated Show resolved Hide resolved
pkgs/record_use/README.md Show resolved Hide resolved
pkgs/record_use/lib/record_use_internal.dart Outdated Show resolved Hide resolved
pkgs/record_use/README.md Outdated Show resolved Hide resolved
pkgs/record_use/lib/record_use_internal.dart Show resolved Hide resolved
pkgs/record_use/lib/src/record_use.dart Outdated Show resolved Hide resolved
@coveralls
Copy link

coveralls commented Sep 3, 2024

Coverage Status

coverage: 91.884%. remained the same
when pulling 728fb3d on addPackageRecordUseJson
into c329cf9 on main.

@mkustermann
Copy link
Member

mkustermann commented Sep 3, 2024

Actually, for our iteration speed and also conceptually, it may actually make sense for this package:record_use to live in the Dart SDK (i.e. dart-lang/sdk@pkg/record_use) for now: The code that generates the resource use json is in the Dart SDK (part of our compiler) and this package is the reading part of that format. So it'd be easier to iterate by having it in the Dart SDK.

Once the format is stable we could move it here (if there's a reason for it)

@mosuem wdyt?

@mosuem
Copy link
Member Author

mosuem commented Sep 3, 2024

But we would still publish it, right?

Also, do we have any restrictions on adding packages to the SDK? I don't want to start any discussions there.

@mkustermann
Copy link
Member

But we would still publish it, right?

Of course we can publish it.

Also, do we have any restrictions on adding packages to the SDK? I don't want to start any discussions there.

Not AFAIK

@mosuem mosuem marked this pull request as draft September 3, 2024 12:28
copybara-service bot pushed a commit to dart-lang/sdk that referenced this pull request Sep 6, 2024
This package provides (de-)serialization for recorded usages (formerly known as resource identifiers).

Adding to the SDK packages for faster development for now - to be moved to dart-lang/ on Github in the future.

See also the review at dart-lang/native#1479.

Change-Id: I4796bbf5616f64ce700a1bc59f279883acb36263
Cq-Include-Trybots: luci.dart.try:pkg-linux-debug-try,pkg-linux-release-arm64-try,pkg-linux-release-try,pkg-mac-release-arm64-try,pkg-mac-release-try,pkg-win-release-arm64-try,pkg-win-release-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/383340
Commit-Queue: Moritz Sümmermann <[email protected]>
Reviewed-by: Martin Kustermann <[email protected]>
@mosuem
Copy link
Member Author

mosuem commented Sep 6, 2024

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
skip-breaking-check type-infra A repository infrastructure change or enhancement
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants