Userland in D language!
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
Cassowary b6bec64a2e Oops commit factor code 3 years ago
src Oops commit factor code 3 years ago
.gitignore Add dirname and tsort 3 years ago
AUTHORS Add AUTHORS file and update COPYING since there are people other than me seemingly wanting to contribute. 3 years ago
COPYING Add AUTHORS file and update COPYING since there are people other than me seemingly wanting to contribute. 3 years ago Add `factor` 3 years ago
dub.sdl Add `factor` 3 years ago Add `factor` 3 years ago
test.deesh Add seq. Add start at deesh. 3 years ago


This is a simple rewrite of coreutils in D, work in progress. Most of the behaviors, at this stage, will be more similar to the FreeBSD coreutils than GNU Coreutils, so as to adhere more closely to the minimum set of functionality defined by POSIX. Once that is implemented, we can look at making thingns diverge from both to be more usable or more ergonomic.

My personal challenge for myself is to implement this mostly from manpages of Linux and FreeBSD, including library manpages. Obviously it depends on some stdc library interfaces and options. Hopefully it’ll be portable to other Unix-likes (I am developing in Linux).




Tha list


  • yes
  • tee
  • tty
  • echo
  • uname (this doesn’t match Linux, but matches FreeBSD’s implementation)
  • hostid
  • true / false (i called it “return” and it will work if you name it true, or false).
  • sync
  • basename
  • tsort
  • dirname
  • cut (extends functionality in useful ways that are substantially better than gnu version).
  • unlink
  • seq
  • sleep


  • mkdir
  • cksum (doesn’t work - algorithm isn’t standard and implementation isn’t correct).
  • wc (-c and -l work, of course, but the -L and -w counts are different from GNU version for unknown reasons).
  • deesh (this is a big ol project in itself)
  • factor (works for up to ulong length things but is a naive implementation that is slower than good implementations)


  • Generic core.sys.posix style wrappers for stdc that aren’t already in there that we use.
  • Generic command boilerplate for --help, --verbose, --version on all commands. Also provide a way to specify filename(s) as part of the command line spec.
  • Generic IO / logging / error boilerplate
  • ls / vdir / dir
  • cp
  • mv
  • rm
  • rmdir
  • ln
  • chmod
  • chown
  • touch
  • dd
  • df
  • du
  • chroot
  • cat
  • head
  • tail
  • sort
  • tr
  • uniq
  • test
  • md5sum / shasum / etc.
  • base64 / base32
  • paste
  • join
  • comm
  • fmt
  • fold
  • expand
  • pr
  • split
  • hostname
  • date
  • pwd
  • su
  • nice
  • who
  • id
  • groups
  • whoami
  • env
  • install
  • link
  • mkfifo
  • mknod
  • shred
  • chgrp
  • expr
  • logname
  • nohup
  • patch
  • pinky
  • printenv
  • printf
  • stty
  • users
  • csplit
  • nl
  • od
  • ptx
  • sum
  • tac
  • ... and anything else, see also:

Maybe ?

  • i18n
  • deesh the D language shell. It should have its own simple shell scripting language maybe based on D syntax (or like something) but with pipes and whatnot.
  • a fully chrootable environment written in D.
  • init? inetd? full userland?! kernel!!!???