User Tools

Site Tools


Get the Source

Repository Access

Personally I prefer SVN. It is what I am most comfortable with, and I have direct access to the server hardware.

The GitHub repository is supported and kept in-sync as a user service.


Currently there are two branches of development: trunk / master on the one hand, and shepherd on the other.

From 2012 to 2018, ownership of PDCLib was in the hands of Erin Shepherd. She added significantly to the implemented features, including (but not limited to) wide character and thread support.

When I got involved into the project again a couple of years later, I quickly came to the point where I realized how different her and my ideas for PDCLib were; this included the build system, version control, source structure, and general approach to when to implement what.

It felt wrong to deconstruct (parts of) Erin's work just to fit it to my approach to things. So I branched the source at the point where Erin had taken over, and continued my development on that branch. This (my) branch was originally labelled retrace.

When I took back ownership of the project in 2018, I migrated the repository from Bitbucket / Mercurial back to Subversion, and re-labelled the branches in the process, making my work the trunk / master, and putting Erin's work in the shepherd branch.

My main focus will be on trunk, but bugfixes etc. will be applied to shepherd as well.


PDCLib is still very much a work in progress, and should be considered “alpha” quality.

The v1.0 development target for trunk / master is full C99 conformance.

The shepherd branch is more feature complete at this point, including some extensions and C11 features.

Overview of features implemented

trunk shepherd Notes
assert.h :DONE: :DONE:
complex.h :TODO: :TODO:
ctype.h :DONE: :DONE:
errno.h :DONE: :DONE:
fenv.h :TODO: :TODO:
float.h :DONE: :DONE:
inttypes.h :DONE: :DONE: missing wcstoimax(), wcstoumax().
iso646.h :DONE: :DONE:
limits.h :DONE: :DONE:
locale.h :DRAFT: :DRAFT: only “C” locale supported
math.h :TODO: :TODO:
setjmp.h :TODO: :TODO:
signal.h :DONE: :DONE: dummy
stdarg.h :DONE: :DONE:
stdbool.h :DONE: :DONE:
stddef.h :DONE: :DONE:
stdint.h :DONE: :DONE: Assuming presence of exact-width 8/16/32/64 bit types.
stdio.h :DONE: :DONE: excluding wide character, locale & float support
stdlib.h :DONE: :DONE: excluding wide character and float support {*1}
string.h :DONE: :DONE:
tgmath.h :TODO: :TODO:
time.h :DONE: :DONE:
wchar.h :TODO: :DRAFT:
wctype.h :TODO: :DONE:

{*1}: Missing MB_CUR_MAX, atof, strtod, strtof, strtold, mblen, mbtowc, wctomb, mbstowcs, wcstombs.

stdalign.h :DONE: :DONE:
stdbool.h :DONE: :DONE:
stdnoreturn.h :DONE: :DONE:
threads.h :TODO: :DONE:
uchar.h :WORK: :DRAFT:

Versioned Releases

You are strongly encouraged to use the lastest code from the respective branch. The pre-v1.0 tags are internal milestones only, and even the latest (v0.5) is several years behind HEAD.

pdclib/source.txt · Last modified: 2018/06/19 13:05 by solar