[vm][cfe][frontend_server] Make "native_assets.yaml" reusable #55826
Labels
area-front-end
Use area-front-end for front end / CFE / kernel format related issues.
area-vm
Use area-vm for VM related issues, including code coverage, and the AOT and JIT backends.
cfe-frontend-server
Frontend server issues for the CFE
front-end-server
Issues with the frontend server
For native assets, we've added the ability to embed some extra information in a kernel file that is read by the vm.
nativeAssets
param or--native-assets=path/to/a/native_assets.yaml
into kernel compilation.@pragma('vm:ffi:native-assets' , { // ... }) library "vm:ffi:native-assets";
.Target
(akaAbi
) to map from asset id to path).For adding data assets (#54003), we need something similar, but we don't care about Target/Abi. So shoehorning it into
native_assets.yaml
is not clean.Adding a
data_assets.yaml
and an extra parameter everywhere in the kernel compilation (CFE, frontend server, etc.) doesn't seem very clean. Instead we should consider replacing the native_assets.yaml with someembed_in_kernel.json
, that has as a top level key anative_code_assets
which contains the current native_assets.yaml contents. Then subsequent types of info to be embedded in a kernel file and accessed from them VM don't have to do any changes in all the various places where kernel is compiled.We could ease the roll of this migration by having the current flag/param being able to consume the new format first, and adding the flag/param everywhere before removing the old one.
Any new keys added would still be validated in
pkg/vm/lib/native_assets/validator.dart
because we'd only be adding metadata that is read by the vm. (The file should be renamed topkg/vm/lib/metadata/validator.dart
.)Naming:
Possibilities:
vm_metadata.json
,--vm-metadata=path/to/vm_metadata.json
and--vm-metadata-only
(cmd invocations of gen_kernel),String? vmMetadata
(dart API),vm-metadata $uri\n
andvm-metadata-only\n
in frontend server protocol, andvm:metadata
(library name, and pragma name).@mkustermann Any suggestions for better naming?
@alexmarkov's suggestion is "metadata" #50152 (comment)
FYI @mosuem (We need to make this piece of infra reusable before putting the data assets mapping in the kernel file)
FYI @jensjoha Sorry for the churn, now I want to rename everything we did in the CFE and frontend_server! 😅
The text was updated successfully, but these errors were encountered: