Skip to content

Commit 4d46ea5

Browse files
committed
openkal 0.8.0, and openkal-kit published from its tarball
openkal 0.8 adds five optional interfaces --- terminal, net, datagram, space and timeout --- each admitted against the criterion clause 3 states rather than because it was wanted. The version crosses a minor boundary, so under the leftmost-nonzero caret rule every already-published consumer of `"0.7.0"` resolves `>=0.7.0, <0.8.0` and is unaffected by this entry. openkal-kit is new here. It is the composed half of the specification: facilities that can be written in terms of openkal's atoms, which the specification therefore declines to admit, and which every caller would otherwise write again. It is published out of the specification's own tarball through `mcpp = "*/kit/mcpp.toml"`, as grpc-plugin and grpcgen are published out of grpc-m's, so its version key need not equal the tag: 0.1.0 comes from openkal's 0.8.0 archive and the two entries carry the same hash because they are the same bytes. ⚠️ Its manifest reaches the specification by `path = ".."` and its headers by `include_dirs = ["../include"]`. Both escape the package's own directory and hold only if the whole archive is extracted and the manifest then located within it. Measured before publishing rather than after: a consumer naming the kit's directory builds and runs against it, parsing an endpoint and refusing a malformed one. Both assets were fetched back from the CN mirror and compared by hash rather than trusted to the uploader's report, which has said `uploaded` for an object that then answered 404.
1 parent 205dddd commit 4d46ea5

2 files changed

Lines changed: 95 additions & 0 deletions

File tree

pkgs/o/openkal-kit.lua

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
-- openkal-kit --- facilities composed from openkal's interfaces.
2+
--
3+
-- Form A because the package is described by its own mcpp.toml.
4+
--
5+
-- ⭐ PUBLISHED OUT OF THE SPECIFICATION'S OWN TARBALL, at `*/kit/mcpp.toml`.
6+
-- The precedent is grpc-plugin and grpcgen, which are published the same way
7+
-- out of grpc-m's archive, and it is why the version key here need not equal
8+
-- the tag: openkal-kit 0.1.0 comes from openkal's 0.8.0 archive.
9+
--
10+
-- The package's own manifest reaches the specification by `path = ".."` and its
11+
-- headers by `include_dirs = ["../include"]`. Both escape the package's
12+
-- directory and hold because the whole archive is extracted and the manifest is
13+
-- then located within it --- which is what the glob below expresses.
14+
--
15+
-- WHY IT IS A SEPARATE PACKAGE AND NOT PART OF THE SPECIFICATION.
16+
--
17+
-- openkal admits an interface only when it is a minimal capability every kernel
18+
-- has and cannot be composed from the interfaces already present. That rule is
19+
-- what keeps openkal implementable on a machine with firmware and nothing else,
20+
-- and it leaves a gap: awaiting two streams at once, or parsing an endpoint out
21+
-- of a configuration file, are composed rather than primitive. This package is
22+
-- where such a composition is written once.
23+
--
24+
-- The distinction is structural rather than stated. Clause 10 makes openkal's
25+
-- contract a C application binary interface; this package exports no name
26+
-- beginning with `kal_` and is C++ modules in `namespace kal::kit`, so a
27+
-- program linking it is not read as an implementation that has added names.
28+
-- The consequence that matters is that this package MAY evolve, which clause 8
29+
-- forbids the specification from doing.
30+
--
31+
-- No `deps`. Its one dependency is the specification, named in its own manifest
32+
-- and satisfied from within the same archive.
33+
package = {
34+
spec = "1",
35+
namespace = "mcpplibs",
36+
name = "openkal-kit",
37+
description = "Facilities composed from openkal's interfaces, and not part of the specification",
38+
licenses = {"Apache-2.0"},
39+
repo = "https://github.com/mcpplibs/openkal",
40+
type = "package",
41+
42+
xpm = {
43+
linux = {
44+
["0.1.0"] = {
45+
url = {
46+
GLOBAL = "https://github.com/mcpplibs/openkal/archive/refs/tags/0.8.0.tar.gz",
47+
CN = "https://gitcode.com/mcpp-res/openkal/releases/download/0.8.0/openkal-0.8.0.tar.gz",
48+
},
49+
sha256 = "c0e758847847baac55763f2056881760834892252f35b2e671bff310d7dd0b34",
50+
},
51+
},
52+
macosx = {
53+
["0.1.0"] = {
54+
url = {
55+
GLOBAL = "https://github.com/mcpplibs/openkal/archive/refs/tags/0.8.0.tar.gz",
56+
CN = "https://gitcode.com/mcpp-res/openkal/releases/download/0.8.0/openkal-0.8.0.tar.gz",
57+
},
58+
sha256 = "c0e758847847baac55763f2056881760834892252f35b2e671bff310d7dd0b34",
59+
},
60+
},
61+
windows = {
62+
["0.1.0"] = {
63+
url = {
64+
GLOBAL = "https://github.com/mcpplibs/openkal/archive/refs/tags/0.8.0.tar.gz",
65+
CN = "https://gitcode.com/mcpp-res/openkal/releases/download/0.8.0/openkal-0.8.0.tar.gz",
66+
},
67+
sha256 = "c0e758847847baac55763f2056881760834892252f35b2e671bff310d7dd0b34",
68+
},
69+
},
70+
},
71+
72+
-- The package's own manifest, in the kit's directory inside the wrap.
73+
mcpp = "*/kit/mcpp.toml",
74+
}

pkgs/o/openkal.lua

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,13 @@ package = {
2222

2323
xpm = {
2424
linux = {
25+
["0.8.0"] = {
26+
url = {
27+
GLOBAL = "https://github.com/mcpplibs/openkal/archive/refs/tags/0.8.0.tar.gz",
28+
CN = "https://gitcode.com/mcpp-res/openkal/releases/download/0.8.0/openkal-0.8.0.tar.gz",
29+
},
30+
sha256 = "c0e758847847baac55763f2056881760834892252f35b2e671bff310d7dd0b34",
31+
},
2532
["0.7.0"] = {
2633
url = {
2734
GLOBAL = "https://github.com/mcpplibs/openkal/archive/refs/tags/0.7.0.tar.gz",
@@ -59,6 +66,13 @@ package = {
5966
},
6067
},
6168
macosx = {
69+
["0.8.0"] = {
70+
url = {
71+
GLOBAL = "https://github.com/mcpplibs/openkal/archive/refs/tags/0.8.0.tar.gz",
72+
CN = "https://gitcode.com/mcpp-res/openkal/releases/download/0.8.0/openkal-0.8.0.tar.gz",
73+
},
74+
sha256 = "c0e758847847baac55763f2056881760834892252f35b2e671bff310d7dd0b34",
75+
},
6276
["0.7.0"] = {
6377
url = {
6478
GLOBAL = "https://github.com/mcpplibs/openkal/archive/refs/tags/0.7.0.tar.gz",
@@ -96,6 +110,13 @@ package = {
96110
},
97111
},
98112
windows = {
113+
["0.8.0"] = {
114+
url = {
115+
GLOBAL = "https://github.com/mcpplibs/openkal/archive/refs/tags/0.8.0.tar.gz",
116+
CN = "https://gitcode.com/mcpp-res/openkal/releases/download/0.8.0/openkal-0.8.0.tar.gz",
117+
},
118+
sha256 = "c0e758847847baac55763f2056881760834892252f35b2e671bff310d7dd0b34",
119+
},
99120
["0.7.0"] = {
100121
url = {
101122
GLOBAL = "https://github.com/mcpplibs/openkal/archive/refs/tags/0.7.0.tar.gz",

0 commit comments

Comments
 (0)