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.
Cas Rusnov b6bec64a2e Oops commit factor code 10 months ago
src Oops commit factor code 10 months ago
.gitignore Add dirname and tsort 11 months ago
AUTHORS Add AUTHORS file and update COPYING since there are people other than me seemingly wanting to contribute. 10 months ago
COPYING Add AUTHORS file and update COPYING since there are people other than me seemingly wanting to contribute. 10 months ago Add `factor` 10 months ago
dub.sdl Add `factor` 10 months ago Add `factor` 10 months ago
test.deesh Add seq. Add start at deesh. 10 months 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!!!???