Consumers need one contract.
Project link libraries
Platform spec article
Project link libraries
Spec standingStandard
-
Hub authority
Context
Decision
Hub owns Project.proj normative text.
Consequences
Mod/Template on hub.
Verification anchors
manifest tests.
-
Mod and Template types
Context
Discriminate project kinds.
Decision
May declare type Mod or Template; hosts use Host + corelib.
Consequences
Links to mods/scaffolding.
Verification anchors
project fixtures.
- Contracts and edge cases Strict guarantees and failure modes for Mod project manifests.
- Design model Conceptual model for `Project manifest contract` and its subsystem boundaries.
- Examples Concrete examples for `Project manifest contract` decisions and usage patterns.
- FAQ and troubleshooting Project manifest tooling FAQ.
- Flow and algorithm Manifest validation and Mod package discovery flow.
- Project link libraries Normative project.link block for Extern library resolution at link time (v0.3).
- Verification and traceability Verification for tooling-side project manifest contracts.
0 revisions (git unavailable at build; counts may be empty)
No commits recorded for this path.
| Section id | Required | Found |
|---|---|---|
what-this-feature-specifies | yes | yes |
implementation-anchors | yes | yes |
Full tree: run pnpm verify:platform-spec-layout (writes src/generated/platform-spec-layout-report.json).
project.link block (v0.3)
Section titled “project.link block (v0.3)”Hosts must parse a nested block under project:
project: name: myapp link: libraries: [libc, pthread] searchPaths: [/usr/lib, /opt/local/lib] extraArgs: ["-lm"]| Key | Required | Meaning |
|---|---|---|
libraries | no | Logical names matching Extern Library fields; resolved via ExternalLibrary |
searchPaths | no | Additional linker search paths |
extraArgs | no | Raw linker arguments appended after provider resolution |
Unknown keys must error with stable diagnostics (manifest band E1801–E1899 or dedicated link band when assigned).
Validation
Section titled “Validation”- Every
ExternLibrarystring used by the project should appear inlink.librariesor be resolved by a provider without manifest entry (provider-defined). - Conflicting resolutions between manifest and CLI import must be diagnosed at build time.
Platform tables (optional extension)
Section titled “Platform tables (optional extension)”Projects may add host-scoped tables in a later manifest revision:
link: linux: libraries: [libc.so.6] macos: libraries: [libc]Until host tables are implemented, platform packages (console, threading) carry per-file Extern Library strings as today.
WinAPI
Section titled “WinAPI”WinAPI / MSVC link metadata is not required for stdlib Standard manifests (platform tier matrix).
Verification anchors
Section titled “Verification anchors”- Model:
compiler/crates/beskid_analysis/src/projects/model.rs::ProjectLinkSection. - Parser:
compiler/crates/beskid_analysis/src/projects/parser.rs::parse_link_block_contents(top-levellink { ... }block; acceptslibraries,searchPaths,extraArgslist fields only). - Validator:
compiler/crates/beskid_analysis/src/projects/validator.rs::validate_link_section(diagnostic band E1890 duplicate block / E1891 unknown field / E1892 empty entry / E1893 duplicate library). - Round-trip tests: parser unit tests in
projects::parser::tests::parse_link_block_*and CLI integration tests incompiler/crates/beskid_tests/src/cli/import_lib.rs.