Currently cannot support multiple languages or non-clike languages
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 25/100
- Issue type
- Feature
- Clarity
- Needs clarification
- Activity status
- Stale
- Tech stack
- c, cpp, objective-c, rust, zig
- Domain
- build-system, tooling
Research direction
No files, tests, or implementation entry points are named. Start by reviewing the existing CPS specification and its treatment of language-specific components, then determine how the proposed languages structure would fit. Done means agreeing on a language-agnostic schema and its ABI and key-value semantics for current and future languages.
Written by the indexing model from the issue text.
Description
I've been thinking about replacing pkg-config a lot, and one of the real short comings of pkg-config is that it assumes C (and C++ and ObjC kinda work because of that), but trying to use a newer language like Rust, Zig, or D is pretty painful, or just impossible. CPS kinda supports non-C languages through it's Type: "jar" mechanism, but that means each language has to be hard coded. It also means that you have to duplicate keys like c-runtime-vendor and cpp-runtime-vendor. I'd propose instead something like this:
{
"platform": {
"languages": {
"c": {
"runtime-vendor": "gnu",
},
"rust": {
...
}
}
},
"components": {
"sample": {
"language": "c",
"type": "dylib",
...
}
}
}
This necessitates a couple of things: that the keys and their values in each component are language specific:" ie, rust doesn't provide a rust dynamic ABI, only a rust static lib ABI, but a component can be built with rust that provides a C ABI.
I think that solving the problems of future languages is really critical to making anything replacing pkg-config a success.
- Dominant language
- Python
- Stars
- 191
- Forks
- 13
- PR merge metrics
- No merged PRs in 30d
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from cps-org/cps
-
Spec: `c-runtime-vendor` field also should document the "musl" typical value and "bionic"Possibly taken @leha-bot claimed this 6 days ago. Open
Difficulty 1/5 Under an hour Newbie friendliness 72/100
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
-
enhancement
Difficulty 5/5 Over a week Newbie friendliness 35/100
-
Difficulty 5/5 Over a week Newbie friendliness 40/100
-
Difficulty 5/5 Over a week Newbie friendliness 35/100
Similar issues
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
anchore/grype-db#1149 · 1 comment ·
Maintainers usually reply within 1 day
-
[Bug]: `hermes plugins update` clones an entire monorepo twice - `subdir` is resolved but dropped at both catalog-update call sitesPossibly taken @HootRock claimed this today. Opencomp/cli P2 type/perf
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
NousResearch/hermes-agent#142417 · 2 comments ·
Maintainers usually reply within 1 day
-
SMC SPEC
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
tenstorrent/tt-oca-harness#3287 ·
Maintainers usually reply within 1 day
-
bug enhancement python
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
DewaldOosthuizen/tech-cheat-sheets-and-notes#392 ·
Maintainers usually reply within 1 day
-
security
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
fabriziosalmi/wildbox#801 ·
Maintainers usually reply within 1 day