06.1 Workspace manifest
.bws structure: identity, members, overrides, registries.
Workspace manifest
.bws workspace manifests coordinate multi-project repos. They do not replace per-member .bproj files: they declare members and shared resolver policy.
Legacy Workspace.proj is rejected (E1895); rename to a .bws file (for example CoreLib.bws).
Building blocks
Section titled “Building blocks”workspace { ... }: workspace identity and resolver policy; extras such asdefaultTestMemberselect the member when you pass the workspace path without--workspace-membermember "<label>" { path = "..." }: adds a project atpath; optional extras (package,description,category,tags) are publish/editor metadata merged from the workspace manifestoverride "<dep>" { version = "..." }: shared registry version policyregistry "<name>" { url = "..." }: centralized registry endpoints
Why bother
Section titled “Why bother”| Without workspace | With workspace |
|---|---|
| Each project owns conflicting dep policy | Shared overrides |
| CI scripts special-case every folder | One lock/resolution story |
”Which .bproj?” roulette | Explicit members |
Minimal mental picture
Section titled “Minimal mental picture”erDiagram
accTitle: Workspace manifest relationships
accDescr: A bws workspace declares members, overrides and registries; each member points to a bproj project, which defines targets and dependencies.
WORKSPACE ||--o{ MEMBER : declares
WORKSPACE ||--o{ OVERRIDE : "sets version policy"
WORKSPACE ||--o{ REGISTRY : lists
MEMBER ||--|| PROJECT : "path to bproj"
PROJECT ||--|{ TARGET : defines
PROJECT ||--o{ DEPENDENCY : declares
WORKSPACE {
string file "CoreLib.bws"
string defaultTestMember
}
PROJECT {
string file "app.bproj or lib.bproj"
}
Text equivalent: A .bws workspace declares members, shared overrides and registries. Each member points at its own .bproj project, and that project defines targets and dependencies.