mu1 VS plump

Compare mu1 vs plump and see what are their differences.

mu1

Prototype tree-walking interpreter back when Mu was a high-level statement-oriented language, c. 2018 (by akkartik)

plump

Practically Lenient and Unimpressive Markup Parser for Common Lisp (by Shinmera)
Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
mu1 plump
3 1
2 115
- -
0.0 0.0
almost 5 years ago 8 months ago
HTML Common Lisp
- zlib License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

mu1

Posts with mentions or reviews of mu1. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-04-03.
  • Small Project Build Systems (2021)
    2 projects | news.ycombinator.com | 3 Apr 2023
    I got sick of juggling code that migrated from one category to the other, so I wrote a little script that deals with chopping up a large source file into multiple TUs before feeding them to the compiler.

    https://github.com/akkartik/mu1/blob/master/build2

    More details: https://news.ycombinator.com/item?id=33574154#33575045

  • Ask HN: Programming Without a Build System?
    15 projects | news.ycombinator.com | 12 Nov 2022
    This really speaks to me. Modern software is too hard to assemble from source. If you're shipping sources, every moving part you add increases the odds of something going wrong on other people's computers.

    It's worth having some skepticism of tools. By making some operations easy, tools encourage them. Build systems make it easy to bloat software. Package managers make it easy to bloat dependencies. This dynamic explains why Python in particular has such a terrible package management story. It's been around longer than Node or Rust, so if they seem better -- wait 10 years!

    For many of my side projects I try to minimize moving parts for anyone (usually the '1' is literally true) who tries them out. I work in Unix, and one thing I built is a portable shell script that acts like a build system while being much more transparent about what it does: https://codeberg.org/akkartik/basic-build

    When I use this script my build instructions are more verbose, but I think that's a good thing. They're more explicit for newcomers, and they also impose costs that nudge me to keep my programs minimalist.

    You can see this build system evolve to add partial builds and parallel builds in one of my projects:

    https://github.com/akkartik/mu1/blob/master/build0

    https://github.com/akkartik/mu1/blob/master/build1

    https://github.com/akkartik/mu1/blob/master/build2

    https://github.com/akkartik/mu1/blob/master/build3

    https://github.com/akkartik/mu1/blob/master/build4

    Each of these does the same thing for this one repo -- build it -- but adding successively more bells and whistles.

    I think providing just the most advanced version, build4, would do my users a disservice. It's also the most likely to break, where build0 is rock solid. If my builds do break for someone, they can poke around and downgrade to a simpler version.

  • 10 Years Against Division of Labor in Software
    5 projects | news.ycombinator.com | 22 Jan 2022
    Totally agreed!

    Here's a prototype from a few years ago where I tried to make this easier: https://github.com/akkartik/mu1#readme (read just the first few paragraphs)

    I still think the full answer lies in this direction.

plump

Posts with mentions or reviews of plump. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-01-22.
  • 10 Years Against Division of Labor in Software
    5 projects | news.ycombinator.com | 22 Jan 2022
    Heh, that thread brings to mind a bunch of things... One advantage of CL that helps with a 'borrowing' aspect that give people the jeebies is that the unit of compilation is much smaller than the file, so you can also borrow much less. Another is that methods are decoupled from classes so there's a lot of room for extensibility. (The LLGPL interestingly provides an incentive for the open-closed principle, i.e. you extend objects you're fine, but if you modify the library's then you are subject to the LGPL.) If you haven't read Gabriel's Patterns of Software book (free pdf on his site), I think you'd enjoy it.

    Your edits won't get blown away, at least by default, since quicklisp doesn't redownload a system that it knows about or check for 'corruption'. The way quicklisp does its own versioning also means if you update quicklisp's distributions lists and a newer version of the library has come out, it'll download that one into its own new folder and leave the old one alone. There's a cleanup function to clear out old things but I don't know of a case where that gets called hidden from you under the hood.

    Maybe there's some magic and interesting stuff related to this for emacs but I'm a vim heretic ;) But in any case if you want to save stuff, you can just save it in a new or existing buffer... So options are basically as I described. To give a specific example, I have a script that fetches and parses some HTML to archive comments and I wanted to remove the HTML bits so I'd just have text, making it more markdown-y. There are lots of ways to do that and I'm pretty sure I chose one of the worst ones, but whatever. I was already using the Plump library, and after not achieving full success with its official extension mechanisms, one method I came across and stepped through was https://github.com/Shinmera/plump/blob/master/dom.lisp#L428 and I decided I could hijack it for my purposes. I started by editing and redefining it in place until I got what I wanted, but instead of saving my changes over the original, I simply copied it over to my script file, modifying slightly to account for namespaces e.g. it's "(defmethod plump-dom:text ((node plump:nesting-node))", thus redefining and overwriting the library implementation when my script is loaded and run.

    Some possible problems with this approach in general include later trying to integrate that script with other code that needs the default behavior (though CL support for :before/:after/:around auxiliary methods can help here, e.g. if I can't just subclass I could insert a seam with an :around method branching between my custom implementation over the library's without having to overwrite the library's; and in the long-term the SICL implementation will show the way to first-class environments that can allow multiple versions of stuff to co-exist nicely). Or the library could update and change the protocol, breaking my hack when I update to it. Or in other situations there may be more complex changes, like if you modify a macro but want the new modifications to apply to code using the old def, you need to redefine that old code, or if you redefine a class and want/need to specially migrate pre-existing instances you need to write an update-instance-for-redefined-class specializer, or if the changes just span across a lot of areas it may be infeasible to cherry-pick them into a 'patch' file/section of your script, so you're faced with choices on how much you want to fork the files of the lib and copy them into your own project to load. But anyway, all those possible problems are on me.

    The asdf noise isn't that big of a deal and I think is only a little related here technically since it's a rather special library situation. It's more 'interesting' socially and as a show of possible conflict from having a core piece of infrastructure provided by the implementation, but not owned/maintained by the implementation. An analogous situation would arise if gcc, clang, and visual studio all agreed to use and ship versions of musl for their libc with any other libcs being obsolete and long forgotten. A less analogous situation is the existing one that Linux distributions do -- sometimes they just distribute, sometimes they distribute-and-modify, whether they are the first place to go to report issues or whether they punt it off to upstream depends case-by-case.

What are some alternatives?

When comparing mu1 and plump you can also consider the following projects:

iceberg - Twitter hit an iceberg, let's replace the ship by Thanksgiving (Nov 24, 2022)

create-react-app-zero - All of Create React App, none of the dependencies

WikidPad - WikidPad is a single user desktop wiki

Odin - Odin Programming Language

pyenv-virtualenv - a pyenv plugin to manage virtualenv (a.k.a. python-virtualenv)

llvm-mingw - An LLVM/Clang/LLD based mingw-w64 toolchain

squeak.org - Squeak/Smalltalk Website

teliva - Fork of Lua 5.1 to encourage end-user programming

Poetry - Python packaging and dependency management made easy

pyenv - Simple Python version management

tup - Tup is a file-based build system.