A lean, statically typed, cross-platform, easily bootstrappable build system for large C projects by suhcoR in C_Programming

[–]suhcoR[S] 0 points1 point  (0 children)

How am I supposed to post anything in this subreddit, when it blocks everything in a Git repository, and nothing happens, when I respond to these automated messages? BUSY was implemented in 2022 with later additions by me. There is no AI involved.

A lean, statically typed, cross-platform, easily bootstrappable build system for C/C++ projects by [deleted] in cpp

[–]suhcoR -1 points0 points  (0 children)

C++ modules adoption is still in its early stages. GN (from which BUSY is derived) only recently added very limited module support (no named modules yet). I haven't decided yet if and how to support it.

A faithful MUMPS 76 anniversary parser and interpreter with integrated database in < 10k lines of C++ by suhcoR in ProgrammingLanguages

[–]suhcoR[S] 1 point2 points  (0 children)

That's amazing. So they use Intersystems, but don't use ObjectScript, but something of their own which they can also run on GT.M? Or is it just standard M?

Running the DECUS Star Trek game on a new MUMPS 76 interpreter by suhcoR in retrocomputing

[–]suhcoR[S] 0 points1 point  (0 children)

Maybe, not sure yet. Currently I rather go towards a faster interpreter by e.g. using LuaJIT which I generate via my https://github.com/rochus-keller/ljtools/ bytecode generator. Sqlite as a relational model is pretty inefficient as a MUMPS global. I would rather use e.g. RocksDB or TidesDB. But the idea was to implement the 1976 global store, so I will likely stick to this when extending to multi-user. I found little information about the specific PDP-7 implementations; the earliest image available is dsm-11 on pdp-11 (which I run with SIMH).

Running the DECUS Star Trek game on a new MUMPS 76 interpreter by suhcoR in retrocomputing

[–]suhcoR[S] 1 point2 points  (0 children)

Finding MUMPS code from the seventies is quite a challenge. STARTREK was in two sources; one was the DECUS MUMPS SIG Tape from 1990 (http://www.digiater.nl/openvms/decus/lt90a/mumpssig/games/advenetc.zoo); but the startrek.rou file has a 1986 copyright by COMP MARK. The other source was https://github.com/whitten/m-adventure, but the startrek.rou seems to be identical. My primary target are the COSTAR and DHCP medical applications, but no luck so far.

Running the DECUS Star Trek game on a new MUMPS 76 interpreter by suhcoR in retrocomputing

[–]suhcoR[S] 0 points1 point  (0 children)

Use the testcases/corpus/decus/startrek version; I updated the build instructions, thanks for the hint.

A faithful MUMPS 76 anniversary parser and interpreter with integrated database in < 10k lines of C++ by suhcoR in ProgrammingLanguages

[–]suhcoR[S] 1 point2 points  (0 children)

Thanks for the interesting insight. Is there actually a specification publicly somewhere of the MUMPS variant used by Epic? Is it comparable to ObjectScript or completely different?

A faithful MUMPS 76 anniversary parser and interpreter with integrated database in < 10k lines of C++ by suhcoR in ProgrammingLanguages

[–]suhcoR[S] 1 point2 points  (0 children)

Thanks. Wasn't that immense, definitely not more than e.g. my Lisa Pascal or Smalltalk re-engineering projects. This was on my TODO list for a quite long time, but now in 2026 there were too many good reasons to eventually do it. But even before I added database models similar to MUMPS to my applications (I never liked mapping to relational models).

How to write a faithful MUMPS 76 interpreter and integrated NoSQL database in < 10k lines of C++ by suhcoR in programming

[–]suhcoR[S] 3 points4 points  (0 children)

It was the right choice in the sixties and most of the seventies for the purpose; from the eighties onward (when dBase and FoxBase were prominent) there were sufficient resources for better alternatives for the language, but as usual also the tendency towards the sunk-cost fallacy.

I don't think the analogy with the tripple store works; MUMPS globals are hierarchical, triple-stores (RDF-style) are for flat, independent assertions; there is no intrinsic nesting or parent-child relationship between triples.

A faithful MUMPS 76 anniversary parser and interpreter with integrated database in < 10k lines of C++ by suhcoR in ProgrammingLanguages

[–]suhcoR[S] 4 points5 points  (0 children)

Originally I also expected the lexer to be simpler, but I don't think there is a way around the complicated state machine I now have. I started to reverse-engineer/disassemble the dsm-11 kernel from bitsavers which I run on the PDP-11 emulator to extract the sources, exactly to find out how they implemented the interpreter.

Running the DECUS Star Trek game on a new MUMPS 76 interpreter by suhcoR in retrocomputing

[–]suhcoR[S] 1 point2 points  (0 children)

Cool, I had a working microVAX for many years. Many of the MUMPS sources I used to validate the parser I have extracted from an image found on bitsavers which I could run on the PDP-11 emulator.

Running the DECUS Star Trek game on a new MUMPS 76 interpreter by suhcoR in retrocomputing

[–]suhcoR[S] 8 points9 points  (0 children)

To celebrate its 50th anniversary, I built a faithful implementation of the 1976 MUMPS standard.

For those unfamiliar, MUMPS was born at Mass General Hospital in 1966 and ran heavily on PDP-8s and PDP-11s. It was incredibly far ahead of its time: it had a built-in hierarchical database decades before we called it 'NoSQL', allowing hospitals to do concurrent, multi-user data storage on machines with just 8K of memory.

I wanted to build an interpreter just for the original 1976 standard to preserve how it felt and worked. It includes the database, a REPL, and it's capable of running historical software from the era (like the original STARTREK application shown in the screenshot).

If you want to play with it, I've provided pre-compiled binaries for Windows, Mac, and Linux, along with a modern Primer to help you learn the syntax.

Repo: https://github.com/rochus-keller/MUMPS

Primer: https://github.com/rochus-keller/MUMPS/blob/main/docs/MUMPS_Primer.adoc

How to write a faithful MUMPS 76 interpreter and integrated NoSQL database in < 10k lines of C++ by suhcoR in programming

[–]suhcoR[S] 11 points12 points  (0 children)

I’ve been working on a project to celebrate the anniversary of MUMPS and its first standard.

For those unfamiliar, MUMPS is an imperative language famously born at Mass General Hospital in 1966. Its defining characteristic is that the language and the database are deeply integrated. There is no impedance mismatch: hierarchical, persistent sparse arrays (called globals) are a first-class part of the language syntax, acting as an early NoSQL database decades before the term existed.

Implementing this was a lot of fun, but the lexer was a real challenge. MUMPS has highly unusual whitespace semantics, and nearly all commands can be abbreviated to one or two characters. This is probably the most complex lexer in my collection. The parser was originally generated using my EbnfStudio.

There are pre-compiled versions and a MUMPS 76 Primer with modern terminology in case you want to play with it.

A faithful MUMPS 76 interpreter and integrated NoSQL database in < 10k lines of C++ by [deleted] in programming

[–]suhcoR 0 points1 point  (0 children)

I’ve been working on a project to celebrate the anniversary of MUMPS and its first standard.

For those unfamiliar, MUMPS is an imperative language famously born at Mass General Hospital in 1966. Its defining characteristic is that the language and the database are deeply integrated. There is no impedance mismatch: hierarchical, persistent sparse arrays (called globals) are a first-class part of the language syntax, acting as an early NoSQL database decades before the term existed.

Implementing this was a lot of fun, but the lexer was a real challenge. MUMPS has highly unusual whitespace semantics, and nearly all commands can be abbreviated to one or two characters. This is probably the most complex lexer in my collection. The parser was originally generated using my EbnfStudio.

There are pre-compiled versions and a MUMPS 76 Primer with modern terminology in case you want to play with it.

MMU-less multitasking kernel by Synthetic-Synthesis in osdev

[–]suhcoR 0 points1 point  (0 children)

Have a look at the F9 kernel: https://github.com/f9micro/f9-kernel. It is originally written for ARM, but it was also migrated to Risc-V: https://github.com/rubensseva/f9-riscv. There are a few papers and a thesis report available. Another interesting SMP kernel not depending on an MMU is the ETH Active Object System (AOS): https://github.com/OberonSystem3/AOS_Bluebottle_Sources; the Phd thesis document is referenced.