| Commit message (Collapse) | Author | Age |
... | |
| |
| |
| |
| |
| | |
Previously, the user of the macro needed a correct environment. This
should not be needed any more.
|
| |
| |
| |
| |
| | |
Also introduces the configuration setting `static-dir', which is where
the static file for the web server are located.
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
Now blocks link to their entry in the sidebar, and the sidebar entries
link to (one of) their blocks.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
While not necessary, since we barely use UUID:s, it's still WAY faster,
and nice to not depend on the system providing `uuidgen'.
For comparison, number of UUID:s generated by different settups in 1
second:
65.000 :: guile native
700 :: guile shell-out
3.500.000 :: c native
100.000 :: libuuid - guile bindings
650.000 :: libuuid
Tests where run with either
(call-with-time-limit
1
(lambda ()
(let loop ()
(uuid)
(set! count (1+ count))
(loop)))
(lambda _ (display count)))
or
volatile unsigned long long count = 0;
sigaction(SIGALARM, ...);
alarm(1);
for (;;) {
uuid();
count++;
}
(let ((count 0))
(call-with-time-limit
1
(lambda ()
(let loop ()
((@ (hnh util) uuidgen))
(set! count (1+ count))
(loop)))
(lambda _ (format #t "exec count = ~:d~%" count))))
|
| | |
|
| | |
|
| |
| |
| |
| | |
Along with updating now failing tests.
|
| | |
|
| |
| |
| |
| | |
Lets take full advantage of guile's format.
|
| | |
|
| |
| |
| |
| |
| | |
Repairs commit 049e94a125ecf43547b62778eb4851d67b1f3cfd, which shows how
config.scm can use optional dependencies.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
It was an extra (rather complicated) macro to support, which had 2
unresolved TODO:s, and made the resulting code hard to read since it
wasn't immediately apparent which procedures where replaced by their
stream counterparts.
The only using code was rewritten using a threading macro, which is way
more readable.
|
| | |
|
|/ |
|
|
|
|
|
| |
We might want to break datetime out into its own (independent) module,
but for that we should have a clear understanding of what it uses.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
While the algorithm was general, the packing of colors, along with the
error handling made it to non-portable.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
It was only used in one module, and provided litle clarity over a simple
set of define statementns.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
This is the first (major) step in splitting the generally useful items
into its own library.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
All the configuration variables hid the actually useful information.
|
|
|
|
|
|
| |
Primarly this moves all vcompenent input and output code to clearly
labeled modules, instead of being spread out. At the same time it also
removes a handfull of unused procedures.
|
| |
|
| |
|
| |
|
|
|
|
| |
Was only used once, and wasn't even optimized.
|
|
|
|
|
| |
A weird special form which was only used once, and didn't add much
clarity above what we actually did.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Previously I generated buttons on the form
<a><div/></a> & <button><div/></button>, which was invalid for button
tags. This removes the inner div, with the only cost being that the
hitbox for the button is slightly wonky if pressed at the top left where
the button isn't when it's depressed, since I move it.
|