• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..20-Jul-2006-

PLUGIN/H07-May-2022-114

arrays/H20-Jul-2006-1,671833

bitsets/H20-Jul-2006-4,8472,874

buffers/H20-Jul-2006-2,8731,991

bugs/H20-Jul-2006-625291

char/H20-Jul-2006-3,1491,673

cmd/H20-Jul-2006-1,097611

dynid/H20-Jul-2006-212117

edit/H20-Jul-2006-136

edstrings/H20-Jul-2006-370265

fmt/H20-Jul-2006-5,5854,306

fs/H20-Jul-2006-1,112605

graphs/H20-Jul-2006-1,047745

handles/H20-Jul-2006-240136

hash/H20-Jul-2006-2,7251,372

identifiers/H20-Jul-2006-1,144803

libboot/H20-Jul-2006-103

libboot2/H20-Jul-2006-103

libhackerlab/H20-Jul-2006-1,4881,183

machine/H20-Jul-2006-459308

mem/H20-Jul-2006-1,096497

oblists/H20-Jul-2006-1,014731

obmarkers/H20-Jul-2006-641469

obqueues/H20-Jul-2006-922723

obtables/H20-Jul-2006-447280

os/H20-Jul-2006-1,036324

properties/H20-Jul-2006-332220

qlinks/H20-Jul-2006-12368

rx/H20-Jul-2006-8,5334,470

rx-posix/H20-Jul-2006-8,5805,688

rx-xml/H20-Jul-2006-3,7502,581

sb/H20-Jul-2006-219165

sort/H20-Jul-2006-357187

splay/H20-Jul-2006-1,387588

strings/H20-Jul-2006-5,1643,650

tests/H20-Jul-2006-198,069194,143

uni/H20-Jul-2006-2,2861,069

unicode/H20-Jul-2006-3,5251,981

unidata/H20-Jul-2006-13,08711,196

unidata-scaffolding/H03-May-2022-1,227967

vu/H20-Jul-2006-9,3575,605

vu-network/H20-Jul-2006-2,1611,427

xml/H20-Jul-2006-14548

xml-scaffolding/H20-Jul-2006-221168

=READMEH A D20-Jul-20064.2 KiB9775

=feature-mapH A D20-Jul-20061 KiB7553

COPYINGH A D20-Jul-200618 KiB354290

ChangeLogH A D20-Jul-200621 KiB409389

Makefile.inH A D20-Jul-2006765 5844

=README

1
2		       The hackerlab C Library
3
4Standard `libc' is a drag.  Use this instead.
5
6Some notable subcomponents:
7
8The `os' module provides a portable interface to those low-level parts
9of `libc' that can't be avoided.
10
11`mem' provides replacements for `memcpy' and friends. It provides an
12allocation interface layered on top of `malloc' that let's you write
13library routines that: (a) are agnostic as to whether malloc failures
14cause the program to stop or the function to return an error, (b) are able
15to partition allocations into separate pools (e.g., to trigger GC for
16some kinds of allocation but not others), (c) have lots of annoying
17extra parameters to get used to.
18
19`arrays' lets you allocate chunks of memory that can tell you how
20large they are ("variable size arrays").  It also has a module for
21huge but sparse arrays (a little unicode, anyone?).
22
23`bitsets' has an exhaustive supply of `bitset' functions and, also,
24some modules for huge but sparse bitset arrays (a little more unicode,
25anyone?).
26
27`cmd' is moving towards a `getopt' replacement.  It's already nicer
28than `getopt', but there's more to do.
29
30`fs' provides some file-name manipulation functions.  Since gaining
31experience with this API, I've decided that it's completely wrong.
32
33`hash' provides an in-core hash-table module which is not optimal in
34either space or time, but not too bad in either, either -- so it makes
35a good default choice when you don't have any specific requirements
36beyond "a hash table".  The API needs some work.  `hash' also has some
37functions for computing hash values.  More are needed.
38
39`rx', `rx-posix', and `rx-xml' are the best regular expression and
40regexp libraries on earth (supporting both 8-bit and Unicode
41characters).  So there.
42
43`sb' is a program (kind of odd for a library) which is like simplified
44`cat', except that it can read and write from unix and internet
45sockets, acting as either client or server.  (This program is included
46with the library since at one time, it was used by the build process.
47I don't think it is anymore and this program might eventually move to
48another package.)  A neat thing about this program is its simplicity.
49Because it uses the hackerlab C library, and in particular `cmd' and
50`VU', `sb' is all of 189 lines long (last I checked).  (NOTE: the `sb'
51program has been "unplugged", meaning that it is not built or
52installed by default.  If you reall want it, rename sb/UNPLUGGED to
53sb/PLUGIN though be aware that careless use of sb can lead to security
54issues (since it can be told to behave as a promiscuous internet
55server).).
56
57`str' is a string library to replace the `str*' functions in `libc'.
58After gaining some experience, I've decided that this API has its
59strong points, but also has its problems.  More functions and some
60changes to existing functions are needed.
61
62`uni', `unicode', and `unidata' are the first steps towards a nice
63`unicode' library, run-time agnostic with respect to coding system and
64written in sublimely classical `C' style.  There's much more to add,
65though.
66
67`vu' is a virtual file system interface.  It provides all of the file
68system functions, but with a layer of indirection so that processes
69can define per-process file-system semantics.  You can "stack" the
70handlers for a particular descriptor.  One of the stackable handlers
71is a buffering package that replaces `stdio'.  `vu' is awesome.
72There's a *little bit* more to do to make it perfect.
73
74`vu-network' extends the file system namespace with handlers for
75(non-standard) URLs for unix and internet domain sockets.
76
77Still needed are: more data structures, especially for (attributed and
78structured) text processing; better string functions; a `find'-like
79file system walker; a generic module for parsing input into fields;
80better support for temporary files; more for sorting and related
81functions, both in-core and disk-resident; disk-resident hash tables;
82a reader and writer for Scheme-like data structures; a GC-based
83implementation of Scheme-like data structures; a couple of VM
84implementations, covering signifcant space/time/complexity trade-offs
85in the VM design space.  Probably some other things I've forgotten at
86the moment.
87
88
89Have fun,
90Tom Lord
91
92Report bugs, ask for help, offer money, or volunteer to help by
93writing "lord@regexps.com".
94
95# tag: Tom Lord Thu Jan 10 02:57:12 2002 (hackerlab/=README)
96#
97