Skip to content
Beskid Platform specification

Beskid

Jump to a Beskid service

Beskid

Jump to a Beskid service

Project link libraries

Platform spec article

Project link libraries

Spec standingStandard

Owner
Piotr Mikstacki
Submitter
Piotr Mikstacki

Hosts must parse a nested block under project:

project:
name: myapp
link:
libraries: [libc, pthread]
searchPaths: [/usr/lib, /opt/local/lib]
extraArgs: ["-lm"]
KeyRequiredMeaning
librariesnoLogical names matching Extern Library fields; resolved via ExternalLibrary
searchPathsnoAdditional linker search paths
extraArgsnoRaw linker arguments appended after provider resolution

Unknown keys must error with stable diagnostics (manifest band E1801–E1899 or dedicated link band when assigned).

  1. Every Extern Library string used by the project should appear in link.libraries or be resolved by a provider without manifest entry (provider-defined).
  2. Conflicting resolutions between manifest and CLI import must be diagnosed at build time.

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 / MSVC link metadata is not required for stdlib Standard manifests (platform tier matrix).

  • Model: compiler/crates/beskid_analysis/src/projects/model.rs::ProjectLinkSection.
  • Parser: compiler/crates/beskid_analysis/src/projects/parser.rs::parse_link_block_contents (top-level link { ... } block; accepts libraries, searchPaths, extraArgs list 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 in compiler/crates/beskid_tests/src/cli/import_lib.rs.