ident
All repositories: gitoria
2.5 KB
// process.hl → class Process — one child, its lifetime, its events. The// eventloop wiring lives HERE so app code never sees it: the events source is// registered AT this instance, the internal fan-out re-emits `line` and// `exit` at itself, and `on process.line` / `on process.exit` in the app are// ordinary instance-scoped handlers.Number pid = 0Boolean running = falseNumber #srcId = 0start(String cmd, options) {// THE STRING GOES OVER WHOLE (mission 249). `hl_proc_spawn` branches on// the argument's type and its string branch is the tokenizer server.hl// documents: whitespace RUNS (spaces, tabs, newlines — a command written// across lines is one command) and quote GROUPING. Splitting here on " "// and handing the pieces to the LIST branch is what kept that code// unreached, and put a tab or a newline inside argv[0].return this.launch(cmd, options)}startArgs(args, options) {return this.launch(args, options)}// The one spawn: `spec` is the command STRING or the argv LIST, and which// one it is decides the branch inside `hl_proc_spawn`, never anything here.launch(spec, options) {let spawned = __native("proc.spawn", spec, options)pid = spawned.pidrunning = true#srcId = __native("eventloop.register", spawned.events, "__procEvent")return this}on __procEvent(ev) {if (ev.exit != null) {running = false// A FINISHED CHILD RETIRES ITS SOURCE (server.hl: "a program whose// children are done simply ends"). Without this the loop still holds// a source that will never speak again and the program never returns.__native("eventloop.unregister", #srcId)emit exit(ev)return null}// a `binary = true` child (ticket #42): the raw bytes as a Bytes, never// split into linesif (ev.chunk != null) {emit data({ data = toBytes(ev.chunk), stream = ev.stream })return null}emit line(ev)return null}\* WRITE TO THE CHILD'S STDIN (ruling on ticket #42): a String's bytes, or aBytes, exactly as they are — nothing added, no newline. Answers how manybytes went. Only for a child spawned with `{ stdin = 'pipe' }` (a child'sstdin is inherited otherwise). The child reads EOF after end(), or when itexits; a write after that is an Error. *\write(data) {if (hlTypeName(data) == 'Bytes') {return __native("proc.write_hex", pid, data.hex())}return __native("proc.write", pid, data)}\* Close the child's stdin: it reads EOF. *\end() {return __native("proc.end", pid)}kill() {if (running == false) {return false}return __native("proc.kill", pid)}
Branches
- mainmain branch
Latest commits
- 5fdbb6b2ident mission 009: report — scratch folder notemre
- 74235815ident mission 009 (4/4): docs (README files map + same-output test, STATUS, LOG), report, tests/letcount.py + realdata-baseline/comparemre
- fe183516ident mission 009 (3/4): let only where reassigned — 293 never-reassigned lets are plain declarations; kept: reassigned, loop bodies, names of a file member, a name declared twice in one function; same outputmre
- d2e7f91bident mission 009 (2/4): one lib file per topic (login, accounts, identities, apps, invites, selector, notify + helpers, util), function routes as thin wrappers in lib/api.hl, project.hl = the map; same outputmre
- 91017164ident mission 009 (1/4): file moves — the root .hl files into lib/ (api.hl → lib/api-helpers.hl), styles.hl → components/styles.hl; imports adjusted, no other changemre
- f8bdcbc2ident: Hybriel master 06617221 (plugin allocators 3a781359 + 413f60e4, mpackdb 2cb7ae5e, http1 773de63e); all gates greenmre
- ff78726cident: Hybriel master 190aa11d (fc838894 GC correctness, #127, #126 closure scopes); gates all greenmre
- a3a7d21aident: Hybriel master 8efba065 (#126 GC by bytes, #48 lambda params copy); session-writing lambdas take &sessionmre
- 98226b41antcolony#40: mission references point to the moved missionsmre
- ff805b9aantcolony#40: history (LOG.md), worker briefs (missions/) and reports moved here from antcolony, numbered per project; old numbers in antcolony docs/mission-map.mdmre
- 51a7bcdfident: Hybriel master 73267707 (#122); /code uses the new page() signature; pending address passed as parameter; once-checksmre
- 836f644fident#24: installable app (manifest, service worker, data-free offline /start), own iconmre
- 8bebbbf2deploy.sh: back up live storage/.sessions/.env before every deploy (newest 5 kept)mre
- cc063ea2deploy.sh: never send .git or .gitignore to Byrodinmre
- 81b15b7bState of 2026-09-27, before the move to gitoriamre