Commit c4eee37
committed
openkal-macos 0.3.0: implement on the kernel, so that the program above may supply its own runtime
Version 0.2 was written upon the system's C library. That is a correct
implementation of openkal for a program that borrows nothing, and it is wrong
for the program clause 1 names first among the consumers the specification
expects: openkal says nothing about what else a program contains, and a program
above it may define every name the system's library defines. If it does, this
implementation's calls resolve to the program's and the program's resolve back
here. The recursion is unbounded and it appears in neither side's source.
This version issues the kernel's own calls. Two names remain and both were
chosen for one property --- no C library defines them, so a program that defines
every ordinary name still leaves them reachable:
clock_gettime_nsec_np this system counts elapsed time in a unit of
the processor's and the conversion lives in
a library rather than in the kernel
pthread_create_from_mach_thread creating an execution context here means
arranging state the kernel does not arrange
Which names were reachable was measured on the system rather than remembered.
.github/workflows/probe.yml asked it and the sources are written against its
answers.
Three findings are worth recording because they are the return on writing a
third implementation.
The suspension primitive exists on this kernel too, under a different name and
with no shared ancestry with the one Linux offers. openkal.task declares its
boundary as a wait upon a word; version 0.2 built that primitive out of a mutex
and a condition variable, which had the relation backwards. That two unrelated
kernels provide the operation is the evidence that it is the shape of the thing
rather than the shape of one kernel.
This kernel has no call that suspends for a duration --- what its own library
uses is a wait upon an object a program carrying no other runtime does not have
--- so kal_time_sleep is the wait openkal.task already requires, upon an address
nothing ever wakes. That is not a substitute for a sleep; it is a sleep,
expressed with the operation this system has.
This kernel has no call that starts a program relative to a directory, so the
directory is entered by the duplicate before it replaces itself. That duplicate
exists for the length of two calls and is not a resource the caller receives,
which is exactly what openkal declines to offer as an operation of its own.
The `standalone' feature states whether this implementation is the whole of the
program's environment, in the same terms the Linux implementation states it: it
is a statement about the program rather than a smaller variant of the
implementation, and the consumer that knows which arrangement holds declares it.
Continuous integration runs the specification's own suite on both architectures,
compares the exported names against SURFACE.txt, and asserts that the objects
reference nothing of a C library but the two names that are named --- with a
probe that the assertion fails when it should.1 parent e05e5fb commit c4eee37
14 files changed
Lines changed: 1299 additions & 589 deletions
File tree
- .github/workflows
- src
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
3 | 18 | | |
4 | 19 | | |
5 | 20 | | |
6 | 21 | | |
7 | 22 | | |
8 | 23 | | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
9 | 29 | | |
10 | | - | |
11 | | - | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | | - | |
19 | | - | |
20 | | - | |
21 | | - | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
22 | 43 | | |
23 | 44 | | |
24 | 45 | | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
25 | 60 | | |
26 | 61 | | |
27 | 62 | | |
| |||
35 | 70 | | |
36 | 71 | | |
37 | 72 | | |
38 | | - | |
39 | | - | |
40 | | - | |
41 | | - | |
42 | | - | |
43 | | - | |
44 | | - | |
45 | | - | |
46 | | - | |
47 | | - | |
48 | | - | |
| 73 | + | |
49 | 74 | | |
50 | | - | |
| 75 | + | |
| 76 | + | |
51 | 77 | | |
52 | | - | |
53 | | - | |
54 | | - | |
55 | | - | |
56 | | - | |
57 | | - | |
58 | | - | |
59 | | - | |
60 | | - | |
61 | | - | |
62 | | - | |
63 | | - | |
64 | | - | |
65 | | - | |
66 | | - | |
67 | | - | |
68 | | - | |
69 | | - | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | | - | |
74 | | - | |
| 78 | + | |
75 | 79 | | |
76 | 80 | | |
77 | | - | |
78 | | - | |
| 81 | + | |
| 82 | + | |
79 | 83 | | |
80 | 84 | | |
81 | | - | |
82 | | - | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
83 | 89 | | |
84 | | - | |
85 | | - | |
86 | | - | |
87 | | - | |
88 | | - | |
89 | | - | |
90 | | - | |
91 | | - | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
92 | 94 | | |
93 | | - | |
94 | | - | |
95 | | - | |
96 | | - | |
97 | | - | |
98 | | - | |
99 | | - | |
100 | | - | |
101 | | - | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
102 | 98 | | |
103 | | - | |
104 | | - | |
105 | | - | |
106 | | - | |
107 | | - | |
108 | | - | |
109 | | - | |
110 | | - | |
111 | | - | |
112 | | - | |
113 | | - | |
114 | | - | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
4 | 13 | | |
5 | 14 | | |
6 | 15 | | |
| |||
9 | 18 | | |
10 | 19 | | |
11 | 20 | | |
12 | | - | |
13 | | - | |
14 | | - | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
15 | 56 | | |
16 | | - | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
17 | 71 | | |
18 | 72 | | |
19 | 73 | | |
20 | 74 | | |
21 | 75 | | |
22 | | - | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | | - | |
27 | | - | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
28 | 87 | | |
29 | 88 | | |
30 | 89 | | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
37 | | - | |
38 | | - | |
39 | | - | |
40 | | - | |
41 | | - | |
42 | | - | |
43 | | - | |
44 | | - | |
45 | | - | |
46 | | - | |
47 | | - | |
48 | | - | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
49 | 111 | | |
50 | 112 | | |
51 | 113 | | |
52 | | - | |
| 114 | + | |
53 | 115 | | |
54 | 116 | | |
55 | 117 | | |
56 | 118 | | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
57 | 130 | | |
58 | 131 | | |
59 | 132 | | |
0 commit comments