| Commit message (Expand) | Author | Age | Files | Lines |
| * | Revamp setup of i18n, now with gotext(0) | EuAndreh | 2025-05-15 | 1 | -1/+1 |
| * | Finish branches.html and setup i18n of manpages and HTML strings | EuAndreh | 2025-05-11 | 1 | -2/+4 |
| * | Switch from POSIX sh to Go | EuAndreh | 2025-05-02 | 1 | -15/+16 |
| * | src/gistatic.in: Initial sh version•••I got a bit frustrated that libgit2 didn't offer an API
or "git archive" commands. I started implementing generating tarballs
from scratch in src/tar.c and I'm quite liking it: the specification is
very small, and the code can be very simple, since all I'm doing is
writing fresh tarballs, and not reading or updating them.
However I felt a bit locked-in to libgit2 itself, and what a detour from
my original goal that is, and the question "what should libgit2 provide"
came up to my mind. This made me realize that libgit2 is playing
catch-up with Git itself, for as long as Git doesn't explicit has an
explicit API, a standard, a public version of its internal libgit.a, or
something like that. In fact, I'm locked in to Git, even.
So even though a C version would probably be much faster, it wouldn't
really have less dependencies, and that's what I'm actually optimising
for: having the software be as portable as possible. On that front, C
is unbeatable with sh as a close second. But the extreme portability
of C aren't being fully exploited here: libgit2 does depend on non-POSIX
things like CMake (and quick grep even shows
references to -D_GNU_SOURCE!!), and Git's Makefile itself isn't POSIX
at all. The point is: by depending on either Git or libgit2, I'm
already loosing many selling points of writing the software in C, and
sh becomes much more attractive. Had existed a common DVCS interface
that could make me decouple gistatic from Git somehow I would insist a
bit more in C, but now I'm switching to sh.
The fact that I was able to get further with sh in one sitting than I
did with C shows that a) I'm a bit less fluent in C than I would like
(at least for now ^^) and b) that it is actually much simpler to do.
I am quite satisfied with the quality of C code that I got so far. The
error handling and propagation is pretty robust, and the implementation
is very disciplined. I did most of the development with Valgrind, and
other sanitizers would help even further, with some fuzzers on top.
| EuAndreh | 2021-09-08 | 1 | -0/+1 |
| * | Have a single top-level main for running unit-tests•••Instead of each .c file becoming a self-standing .t executable file,
and being run for executing the unit tests local to the file, now each
.c becomes a .to object (akin to a .o object, but one where the -DTEST
flag is given to the compiler). After that, all the .to objects are
linked together in a gistatic-tests executable, in a equivalent way
that all .o files get linked together in a gistatic executable.
This change was necessary in order to allow dependencies between
objects. The next task will be making a tar of a repository tree
checkout, and src/gistatic.{o,to} will start depending on
src/tar.{o,to}. If each file has its own main function when -DTEST is
given, then I wont be able to link them together.
I took the opportunity that I had to change the Makefile, and I
improved the dependency between targets and dependencies greatly. From
what I can tell now, it is correct.
| EuAndreh | 2021-08-22 | 1 | -2/+3 |
| * | .gitignore: Add libgistatic.a and src/config.h | EuAndreh | 2021-08-19 | 1 | -2/+4 |
| * | .gitignore: Add tmp/ | EuAndreh | 2021-08-05 | 1 | -0/+1 |
| * | src/: Add initial working version of generating the index, without translated... | EuAndreh | 2021-07-30 | 1 | -0/+2 |
| * | Re-setup repository using C over Rust | EuAndreh | 2021-07-27 | 1 | -1/+7 |
| * | WIP init Rust | EuAndreh | 2021-05-30 | 1 | -0/+1 |
| * | Remove empty Perl code | EuAndreh | 2021-05-28 | 1 | -1/+0 |
| * | Adapt Makefile for Perl project, add placeholder files | EuAndreh | 2021-03-08 | 1 | -0/+1 |
| * | Add .gitiginore | EuAndreh | 2021-03-08 | 1 | -0/+1 |