Saturday, July 30, 2011

Good news, everyone: 'pgperf' dropped

Yesterday I started a branch in SVN to experiment with changing the directory layout of the project.

While reorganizing everything I had to think about how to handle 'pgperf', the customized version of GNU gperf that shipped with the original LambdaMOO server. gperf is a "perfect hash generator" that creates a hashing function and a lookup function for the LambdaMOO programming language. It generates the file 'keywords.c' in the project. LambdaMOO came with a hacked version because in 1997 gperf didn't support case-insensitive lookup tables, and the original author of LambdaMOO added this feature and included it with the project.

The idea for the project reorganization I have is at the top level of the Waverous project you will see the standard directories you see in a lot of open source projects:
bash-3.2$ ls -l
total 376
-rw-r--r--    1 swain  swain  145516 Jul 29 19:57 ChangeLog
-rw-r--r--    1 swain  swain    8605 Jul 29 19:47 LICENSE
-rw-r--r--    1 swain  swain     343 Jul 29 19:44 Makefile
-rw-r--r--    1 swain  swain   10770 Jul 29 19:47 README
-rw-r--r--    1 swain  swain    2907 Jul 29 19:47 README.Minimal
-rw-r--r--    1 swain  swain   10121 Jul 29 19:47 README.rX
drwxr-xr-x    7 swain  swain     238 Jul 29 22:40 databases
drwxr-xr-x    8 swain  swain     272 Jul 29 19:49 doc
drwxr-xr-x   17 swain  swain     578 Jul 30 09:19 examples
drwxr-xr-x    5 swain  swain     170 Jul 29 19:46 extensions
drwxr-xr-x    5 swain  swain     170 Jul 29 20:00 extras
drwxr-xr-x  148 swain  swain    5032 Jul 30 09:38 src
drwxr-xr-x    8 swain  swain     272 Jul 29 19:45 tools
My goal is to write a Makefile.am that handled the subdirectories that formed "standalone" projects: src (the server), doc (the manual and Doxygen docs), and extras/pgperf.

While waiting for my wife's oil change at the dealership (yay free wi-fi!) I tried to compile 'pgperf' as shipped with the project. Compilation failed due a dependency on varargs.h, "gcc" telling me it was obsolete. This brought to mind a task I've thought about a number of times but hadn't written down: drop pgperf for GNU gperf IFF gperf now supported case-insensitive lookup tables.

GNU gperf added support in 2002 with the flag --ignore-case, so after an afternoon of tinkering, regenerating files, recompiling and testing I've gotten everything working just fine with gperf. I've dropped pgperf entirely from SVN.

On a side note, working with Subversion is so painfully slow now -- I've been using Git for the past six months -- that I'm going to switch the project to Git quite soonish now that Google Code supports Git.

No comments:

Post a Comment