Basketcase Library - Main page


Basket Case started as a sort of collection of little utility modules that didn't really warrant an entire project to wrap around them, and is slowly growing over time. It contains things ranging from terminal logging, to implementations of certain paradigms, such as the observer pattern. It's basically boost for nim, but without the bullshit or expertise.

If you want to know what modules are included and have a description of each one, you can check here to see the listing.

Unless otherwise noted, all modules contained within are licensed under the LGPL version 3.

In case you need a link to the project's page, you can find it here.

Why isn't this on nimble?

The reason this module is not on nimble is because dealing with people is painful. I maintain my own private nimble repo somewhere on gitgud which I use alongside the standard one. If you want to add this repo to nimble, feel free, just don't expect me to interact with random people. I wrote this first-and-foremost for my own purposes and am releasing it in the hopes that someone might see my code and go "what the hell was this lunatic thinking?!" and do it better. Possibly while calling me random racial epithets on the internet.

(It's slightlyHeavily encouraged in fact! Build me towers!)

Do note, I have no problem with the nimble devs nor maintainers. They have done a great job and it's simply that I am not willing to engage with them due to bad experiences with other programming/developer communities in the past. Even if I chose to I am certain that it will fireball spectacularly due to my personality.

Bug reporting or Feature requests

Due to the nature of my being a total fucking misanthropebit of a quiet person, it may be difficult to do so. If you file reports to the gitgud repo and I see them I'll start off as shocked, blink a few times, and then set about seeing if it's something I can actually fix/implement. Be warned I don't check it that often since I mainly just use git repos for my own tooling purposes. Also please bear in mind that as I am constantly learning new things about Nim and am also very particular about certain code-related things, it might result in things being very un-idiomatic. I try to keep things simple and optimized enough and follow a consistent standard when its not 4 in the morning after writing code for an entire day.

I mean seriously, it's not like anyone is actually going to use this library, right?


With the deprecation of the log module I've decided to rework the version setup. Or in this case, actually bloody use it properly.

Major version means breaking change. Minor means minor but maintains api stability. Patch means a broken function was fixed.

With this I've also bumped the minimum nim version. I'm not an expert when it comes to changes so I can't be certain what version has what fixes beyond major stuff, so this might be higher than the minimum though I'll probably bump it when a new module is added if necessary.


Reworked things. Fixed documentation a bit, moved stuff around without breaking stability. Minor new features to things. Yes.


A new project structure has been introduced. Normal modules are found within the cases namespace, as per usual, and now prototype modules are found within the experimental namespace. These modules should not be considered to be api stable yet.

Yes I used html4 tags get off my dick grumble grumble grumble