Development

This document is supposed to contain all of the knowledge necessary to develop bc and dc.

This document is meant for the day when I (Gavin D. Howard) get hit by a bus. In other words, it's meant to make the bus factor a non-issue.

This document will reference other parts of the repository. That is so a lot of the documentation can be closest to the part of the repo where it is actually necessary.

What Is It?

This repository contains an implementation of both POSIX bc and Unix dc.

POSIX bc is a standard utility required for POSIX systems. dc is a historical utility that was included in early Unix. They both are arbitrary-precision command-line calculators with their own programming languages. bc's language looks similar to C, with infix notation and includes functions, while dc uses Reverse Polish Notation and allows the user to execute strings as though they were functions.

In addition, it is also possible to build the arbitrary-precision math into a library, named bcl.

TODO

  • The purpose of every file.
  • How locale works.
    • How locales are installed.
    • How the locales are used.
  • Why generated manpages (including markdown) are checked into git.
  • How all manpage versions are generated.
  • Fuzzing.
    • Including my tmuxp files.
    • Can't use libdislocator.so.