68 lines
2.7 KiB
Plaintext
68 lines
2.7 KiB
Plaintext
liberty
|
|
=======
|
|
|
|
'liberty' is a pseudolibrary of all the common C code I have written for various
|
|
projects. I used to copy-paste large swaths of code with minimal changes to it
|
|
and it slowly became awfully painful to synchronize. The project can be thought
|
|
of as a successor to my other C library, libxtnd.
|
|
|
|
You are supposed to import it as a git submodule and include the main source
|
|
file directly everywhere you need it. Everything is declared "static". I have
|
|
come to the conclusion that this style of C programming suits me the best, as it
|
|
allows me to nearly forget about the mess that are header files.
|
|
|
|
The API is intentionally unstable, which allows for easy refactoring.
|
|
|
|
All development is done on Linux, but other POSIX-compatible operating systems
|
|
should be supported as well. They have an extremely low priority, however, and
|
|
I'm not testing them at all, with the exception of OpenBSD.
|
|
|
|
Tools
|
|
-----
|
|
This project also hosts a number of supporting scripts written in portable AWK:
|
|
|
|
asciiman.awk::
|
|
A fallback manual page generator for AsciiDoc documents,
|
|
motivated by the hugeness of AsciiDoc's and Asciidoctor's dependency trees.
|
|
It uses the _man_ macro package.
|
|
|
|
cmake-parser.awk::
|
|
Parses the CMake language to the extent that is necessary to reliably
|
|
extract project versions. Its greatest limitation is its inability
|
|
to expand variables, which would require a full interpreter.
|
|
|
|
cmake-dump.awk::
|
|
This can be used in conjunction with the previous script to dump CMake
|
|
scripts in a normalized format for further processing.
|
|
|
|
lxdrgen.awk::
|
|
Protocol code generator for a variant of XDR,
|
|
which is link:libertyxdr.adoc[documented separately].
|
|
Successfully employed in https://git.janouch.name/p/xK[xK].
|
|
|
|
lxdrgen-c.awk::
|
|
LibertyXDR backend that builds on top of the C pseudolibrary.
|
|
|
|
lxdrgen-go.awk::
|
|
LibertyXDR backend for Go, supporting _encoding/json_ interfaces. It also
|
|
produces optimized JSON marshallers (however, note that the _json.Marshaler_
|
|
interface is bound to be underperforming, due to the amount of otherwise
|
|
avoidable memory allocations it necessitates).
|
|
|
|
lxdrgen-mjs.awk::
|
|
LibertyXDR backend for Javascript, currently for decoding only.
|
|
It cuts a corner by not using BigInts, on par with `JSON.parse()`.
|
|
|
|
Contributing and Support
|
|
------------------------
|
|
Use https://git.janouch.name/p/liberty to report any bugs, request features,
|
|
or submit pull requests. `git send-email` is tolerated. If you want to discuss
|
|
the project, feel free to join me at ircs://irc.janouch.name, channel #dev.
|
|
|
|
Bitcoin donations are accepted at: 12r5uEWEgcHC46xd64tt3hHt9EUvYYDHe9
|
|
|
|
License
|
|
-------
|
|
This software is released under the terms of the 0BSD license, the text of which
|
|
is included within the package along with the list of authors.
|