Skip to content

Latest commit

 

History

History
355 lines (269 loc) · 11.9 KB

File metadata and controls

355 lines (269 loc) · 11.9 KB

0.23 (Q1 2026) (principia-softwarica.org website, iwp9, switch to goken, resume APE and network, libimg, Widgets/Machines/Profilers/Kernel/Window/Libcore v1)

website

  • new principia-softwarica.org domain linked to github pages
  • live website! took lots of text from iwp9 submission and slides, ls-journey.html, literate.html, getting-started.html, big tables current state, motivations, etc.

huge

  • another email from Knuth! principia linked from his literate programming page!

books

  • Widgets v1: explanations, ASCII diagrams, full pass
  • Machine v1: explanations, ASCII diagrams, full pass
  • Profilers v1: LPization prof.c, tprof.c, time.c, LP split, and basic explanations
  • Kernel v1: explanations, ASCII diagrams (especially memory layout), full pass
  • Window v2: almost full explanations, more ASCII diagrams
  • Libcore v1: LPization libflate, libregexp, libbio, libstring, libthread and basic explanations
  • Editor v1: explanations
  • lots of lineage.txt refinements
  • All:
    • conclusion with summary, patterns and techniques, other books relationships, and beyond plan9
  • resume syncweb_indexer with semgrep-pfff-langs

docs

  • submit full paper to IWP9 (also submitted WIP on goken and xix) and cleaned Dockerfile and dosdisk.img extraction and use dosfstools so more portable

networking

  • resume networking, run ipconfig, dns -r, and cs (important) in boot.rc and works in QEMU!
  • resume browsers and abaco works in QEMU! run plumber, webcookies, and webfs in boot.rc

build infra

  • switch to goken9cc in Dockerfile so can build for both amd64 and arm64 (and deprecated use of fork-kencc).
  • resume compilation of APE (needed to compile ocaml-light/otherlibs/unix which itself is needed for rio in ocaml)

lib_graphics

  • add libimg (was called cmd/jpg in plan9), useful for abaco/mothra
  • add also paint.c from 9front

----------------------------------------------------------------

0.22 (Q4 2025) (LPization ed.c in Principia.nw, compile with goken)

books

  • LPization ed.c in Principia.nw

build infra

  • compile principia also with goken

0.21 (Q3 2025) (LPization v1 Utilities.nw)

books

  • first Lpized version of Utilities.nw (that also compiles in goken)

0.20 (Q2 2025) (Dockerfile, resume build)

build infra

  • resume build principia and dosdisk.img and 9qemu for pc/386 thx to kencc (and 9-cc from david colombier). It builds and run again via Qemu! Last time was in 2018 according to the date of 9qemu. Rio is also working (not sure why I was worried it was not working anymore).
  • resume build principia and dosdisk.img and 9pi for pi/arm. It builds and run again on my (real) Rasperry Pi 1. Last time was in 2018 according to the date of 9pi. Rio is also working.

test infra

  • Dockerfile and docker.yml Github Actions CI

----------------------------------------------------------------

Big pause to work on semgrep for 2019/2020/2021/2022/2023/2024

----------------------------------------------------------------

0.19 (Q3 2018) (LPization v1 Widgets.nw)

books

  • LP split Widgets.nw

build infra

  • mk pdf, mk all, mk sync for everything! can build everything, including all the books from scratch, with up-to-date code indexing

0.18 (Q2 2018) (Linux and Windows support)

build infra

  • big code reorganization and changes to mkfiles to (cross)compile also under Linux and Cygwin (in additon to macOS)

#(got a surface book 2 so opportunity to experiment with different OSes)

  • simplifiy mkfiles, remove need for symlinks, remove need for /386 and /arm by using instead $TOP and $ROOT variables in mkfiles, so again easier to cross compile from Linux or Cygwin
  • simplified the core mkfiles too (mkone, mklib, etc.)
  • can now cross-compile from Linux
  • remove need for certain utilities or command-line options (e.g, ls -p) so need less commands from kencc/
  • no need for plan9port anymore

(thx to a bigger fork-kencc)

  • can now cross-compile from Windows (via cygwin)
  • can build pc and pi targets from Linux/macOS/Cygwin hosts

#extra: reMarkable and knowledge-books library! #extra: surface book 2

0.17 (Q1 2018) (intro and overview Shell.pdf, code indexing)

books

  • intro+overview Shell.pdf
  • lots of lineage.txt
  • lots of chunknames refactoring
  • syncweb: added -to_tex, with automatic code indexing (very nice)

-----------------------------------------------------------

0.16 (Q4 2017) (VCS.pdf core-DS/main/, LPization git algorithms)

books

  • core-ds/main/… VCS.pdf
  • LP split diff_myers, basic edit distance, sha1, unzip

(git in ocaml v2: diff3 in ocaml, ???? zip in ocaml? merge? packing? network?)

#extra: got reMarkable tablet!

0.15 (Q3 2017) (LPization v1 VCS.nw, intro and overview VCS.pdf)

books

  • LP split of dulwich for VCS.nw
  • LP split of ocaml port of dulwich
  • intro+overview VCS.pdf

#(git in ocaml v1)

0.14 (Q2 2017) (kernel and rio in OCaml)

books

  • LP split more Kernel.nw

#(kernel in ocaml, until scheduler, but no real process, no files, basic memory)

  • LP split more Graphics.nw

#(draw in ocaml, just userspace side (libdraw/))

  • LP split more Windows.nw

#(rio in ocaml, and lib_system with 9P protocol)

0.13 (Q1 2017) (GioGio! Kernel.nw port to Raspberry Pi)

books

  • integrate Richard Miller’s port of 9 to the Raspberry Pi (bcm/).
  • adapt the kernel code to pad’s style in Kernel.nw
  • switch to ARM for Kernel.nw

!!it works under my Raspberry Pi!! Principia on Raspberry Pi!!

-----------------------------------------------------------

0.12 (Q4 2016) (Make.pdf, LPized v1 Libcore.nw, LP v2 split understand Compiler.nw)

books

  • finish Make.pdf v1
  • first lpized version of Libcore.nw
  • deeper understanding of Compiler.nw, better LP split

#(5c typechecker and basic code generation in ocaml)

  • Assembler.pdf v2, major revisions, finish Todos, more figures, better english
  • started contact publishers

0.11 (Q3 2016) (intro and overview Make.pdf, LP v2 split and understand Shell.nw)

books

  • intro+overview Make.pdf
  • deeper understanding of Make.nw, better LP split

#(mk in ocaml)

  • deeper understanding of Shell.nw, better LP split

#(rc in ocaml)

#(cpp in ocaml) #(5c parser in ocaml)

0.10 (Q2 2016) (intro and overview chapters for Graphics.pdf and Windows.pdf)

books

  • intro+overview Windows.pdf
  • intro+overview Graphics.pdf

internals

  • reorg code draw, rio

0.9 (Q1 2016) (LP v2 split and understand more Graphics and Windows)

books

  • deeper understanding of Graphics.nw, better LP split
  • deeper understanding of Windows.nw, better LP split

internals

  • reorg code 5l, 5a, better tabular

#(5l in ocaml)

-----------------------------------------------------------

0.8 (Q4 2015) (Assembler.pdf, Linker.pdf)

books

  • finish Assembler.pdf v1 (explanations for most chapters, figures)

#(5a in ocaml)

  • finish Linker.pdf v1 (explanations for most chapters, figures)

huge

  • Meeting Knuth! got emails from Knuth!

0.7 (Q3 2015) (Marriage! :), Principia.pdf)

books

  • Principia.nw, the meta book! pretty good Principia.pdf
  • started explaining the code and produce readable books:
    • Assembler.nw: intro + overview chapters finished
    • Machine.nw: intro chapter finished
  • first lpized versions for:
    • Soldat (cruel hessian)

0.6 (Q2 2015) (plan9 port of ocaml/efuns, LPization v1 Generator, Network)

books

  • !!Finished first lpized versions for almost all principia components!! except for Libc/Profiler/Utilities.nw.
  • Added a few other though (Efuns, OCaml, Mmm).
  • first lpized versions for
    • Lex/yacc Generator (actually ocamllex and my own ocamlyacc)
    • Network
    • Debugger (very partial)

ocaml

  • OCaml, continue extensions (backtrace) and port to plan9!
  • Efuns, continue extensions (minimap, position history, etc), and port to plan9!

0.5 (Q1 2015) (LPization v1 Compiler, OCaml/Editor(Efuns)/Browser(mmm))

books

  • switch to ARM for Compiler.nw
  • continue work on
    • Linker.nw, Machine.nw, Assembler.nw
  • switch to OCaml for Editor.nw, better than C candidates, and also for Browser.nw (and later for Generators.nw too)
  • first lpized versions for a few ocaml programs:
    • Efuns (and ported it to mac, extended it, eshell, dircolors, etc)
    • Ocaml (light) (and simplified the code, removed objects, functors, etc)
    • Browser mmm

-----------------------------------------------------------

0.4 (Q4 2014) (LPization v1 Graphics/Window/Shell, Machine/Assembler/Linker, Make)

books

  • first lpized versions of many components:
    • Machine, Assembler, Linker, Compiler,
    • Graphics, Window, Shell,
    • Make, with each time a similar procedure summarized in Template.nw
  • switched to ARM, starting with Machine.nw, and then Assembler.nw, Linker.nw

0.3 (Q3 2014) (pfff -lpize finer-grained split)

program analysis

  • spent time on datalog and graph_code_c to answer questions I had while looking at the kernel, such as who calls that, what constants can flow in this integer field
  • pfff -lpize which not only split in files but also split entities (thx to better pfff -parse_c), so quicker to get a first workable literate document
  • change code to get codegraph -lang c to work on, and also introduced many globals.c to remove some backward dependencies.
  • codegraph now works (conservatively) on the whole plan9
  • syncweb: pfff -lpize finer-grained split

books

  • started Window.nw, Make.nw, etc.

0.2 (Q2 2014) (Kernel.nw)

books

  • made a first version of the literate program for the kernel, good TOC, Kernel.nw
  • almost full LPization, 20 chapters!!, aspectize, lp split, reorg again, try to understand almost every parts of the code, simplified the code many times (e.g. for virtual memory), removed dead code, renamed important structures (e.g. Mach -> Cpu, m->cpus, externup removal), added arch/, get rid of edf.c, aspectized advanced virtual memory (MAXKPA), rename Pte to pagetable, more consistent pte, pt, pde, pd, mmupxxx
  • 4 or 5 bugs reported on 9fans!

tooling

  • syncweb: -lpize initial, M-x pad-literate-split refresh

0.1 (Q1 2014) (fork kencc and plan9, cross compile whole distro from Mac)

build infra

  • got kencc working on my mac (but had to backport features from pLan9 labs 8c such as ELF support, and later some fixes related to unicode)
  • forked kencc, cg/cm on kencc
  • was able to cross compile from macOS
    • the kernel, and then
    • all the utilities,
    • libraries

    (xv6 was actually hard to cross compile on macOS, binutils sucked)

  • forked plan9 with the idea of making a xix based on plan9. I simplified the code, removed support for some architectures, device drivers, etc I reorganized also a lot the code (and use xmv and symlinks to be compatible)
  • was able to get to work on my own plan9 fork and my own plan9 distribution:
    • the kernel (via qemu -kernel),
    • mini shell,
    • full shell,
    • dossrv
    • rio
    • the network

    very quick iterative loop!

  • simplified a lot the kernel, removed many syscalls, lots of dead code, reorg in different directories. Used codemap/codegraph on .clang/.clang2 and introduced hook to remove some backward deps, split portdat.h, dat.h, etc, used scheck on plan9 code, annotated code with @scheck for false positives
  • read balestero’s notes on plan9 kernel

-----------------------------------------------------------

Alpha (Dec 2013) (it runs!)

test infra

  • got Plan9 working on Virtual Box and then QEMU (was not that easy, QEMU had some bugs and Plan9-labs was not very QEMU friendly),
  • played with rio! (30 dec 2013, just before new year :) )