The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
Revision history for Perl extension SpeedyCGI.

2.11	Tue Mar 20 22:59:36 PST 2001

	- When using the new Group option, exit was causing the whole
	  interpreter to exit.
	- Fixed a bug introduced in 2.10 where mod_speedycgi could run
	  the wrong script
	- Fixed a bug where mod_speedycgi could mix up the sh-bang options 
	  between different scripts.
	- Added automated mod_speedycgi testing.
	- Added a workaround for a Solaris 2.5.1 bug that was causing the
	  mungefds and touch tests to fail.
	- Added a new variable $CGI::SpeedyCGI::i_am_speedy for a quick way
	  to check if the script is running under speedycgi.
	- New methods: add_shutdown_handler, shutdown_now, shutdown_next_time

2.10	Wed Jan 31 02:56:33 PST 2001

	- Multiple scripts in one interpreter using the new Group option.
	- Reduce speedy exec time by removing all extraneous shared-libs
	- Make code smaller by adding ifdefs to separate frontend/backend code.
	- Speedy frontend now dies on sigpipe if it gets epipe on fd 1 or 2
	- The backend now always tracks the current directory of the frontend
	- New "register_cleanup" method
	- Build binaries for solaris and bsd ("make solpkg" and "make bsdpkg")
	- Bug fixes:
	    - Changing mtime on a script could cause temp-file corruption
	    - After hitting maxruns, backend was not chdir'ing to the right
	      directory before exec'ing itself.

2.02	Sun Dec 17 21:43:02 PST 2000

	- Bug fixes
	    - Memory leak in mod_speedycgi
	    - Zombie backends could appear to still be running
	    - Options in #! line were sometimes ignored
	    - Module is not being installed correctly on CPAN
	    - Fix for mod_speedycgi compile failure on solaris-8
	- Default value for MaxRuns is now 500
	- Experimental support for setuid scripts with -DIAMSUID
	- Don't link the frontend with libperl
	- New -v option displays the SpeedyCGI version
	- Add ability to build binary rpms with "make rpm"

2.0.1	Sun Oct 22 19:53:24 PDT 2000

	- Bug fixes:
	    - mod_speedycgi reports temp file is corrupt
	    - Switching from mod_perl to mod_speedycgi causes error
	    - Runaway file growth in FreeBSD 3.4
	    - Stranded sockets in /tmp
	    - Dead frontends are left stranded in invalid groups
	    - Cannot reliably detect temp-file removal
	    - MAP_FAILED not defined on HP-UX
	    - index() declaration compiler warning on Solaris
	  Details are at

2.0	Mon Sep 11 02:46:57 PDT 2000
	- Use unix sockets instead of tcp sockets.  Fixes the TIME_WAIT
	  problem in 1.x releases.

	- When a backend hits MaxRuns it now re-execs itself.  Setting
	  MaxRuns to 1 allows pre-compilation of scripts that can't run

	- Cleaner implementation of MaxBackends using frontend queuing.

	- The backend is now a separate binary from the frontend.

	- mod_spedycgi is now a shared object (DSO).

	- Redesigned temp-file structure:

	    - One temp-file for each user, used for all speedy processes
	      running under that uid.

	    - Track backends regardless of their state.

	    - Two way queuing - backends waiting on frontends and frontends
	      waiting on backends.

	    - Support for multiple scripts running in a single interpreter.
	      Not yet implemented in code.

1.8.3  Sat Aug 01 16:52:20 GMT 2000
        - Added MAXBACKENDS feature to limit number of backend processes
          spawned.  This required changing the format of the backend
          queue.  Now each entry has a pid, port number, and used flag.
          The queue now contains a list of all backend processes, with
          the used flag present to determine whether or not the process
          is in use.

        - Added contrib directory with instructions on using SpeedyCGI
          with HTML::Mason

1.8.2  Sun Jun  6 04:01:53 GMT 1999

	- Make I/O more compatible with PerlIO

1.8.1  Sat Jun  5 12:30:43 PDT 1999

	- Fix compile failure under perl 5.004.

1.8  Thu Jun  3 13:20:00 PDT 1999

	- Now has support for an Apache module front-end, mod_speedycgi.
	  This is a optional performance improvement -- it is not required
	  in order to run SpeedyCGI under Apache.  See apache/README
	  for details.

	- Fix for initial_eof test bug on SGI-Irix.

	- New CGI:SpeedyCGI method "i_am_speedy" allows the script
	  to tell whether it is running under SpeedyCGI

	- New CGI::SpeedyCGI methods "setopt" and "getopt" allow the
	  script to set/get SpeedyCGI options at runtime.

	- Fix for bug in Solaris where SpeedyCGI options could not be
	  passed in on the #! line.

	- Better documentation

	- Fix to make t/shutdown.t work before "make install" is done.

1.7  Thu May 13 00:28:42 PDT 1999

	- Re-did a lot of the queue.c code.  Fixes the bug where queue
	  order was not being preserved when a perl-proc exited.  Also
	  saves a couple syscalls when using read/write instead of mmap.

	- Fixed compile warnings on Dec Alpha in start_perl.c and 

	- Added "sleep 2" to fix t/basic.t test #2 under HP-UX.

	- Secret word was not very random on little-endian systems.

1.6  Sun Apr  4 18:18:25 PDT 1999

	- added support for stderr.

	- make sure to cd back to original directory after each perl run.

	- signals are now reset between every request.

	- wrote speedy_poll.c -- allows compilation for
	  either poll or select, using defines USE_POLL or USE_SELECT.
	  Default is poll for sysv & sun, select for all others.

	- queue.c patch for compile failure on alpha/OSF1 V3.2. 
	  From Jean-Damien Durand <>

	- Use mtime instead of ctime to check whether a file has changed.
	  Touch doesn't reliably update ctime on some systems.

	- Send over environment using the same poll loop as when sending
	  stdin/stdout.  A little cleaner & more efficient.

1.5  Tue Mar 30 13:33:55 PST 1999

	- Re-wrote the test scripts to be more reliable.

	- Added a FAQ file.

1.4  Mon Mar 29 03:54:39 PST 1999

	- Converted C++ style comments to /**/.  Should help compilation

	- Added CGI::SpeedyCGI::set_shutdown_handler to allow the perl
	  program to set a callback for when perl is shut down.

	- Added t/shutdown.t to test the new set_shutdown_handler feature.

	- queue.c wouldn't compile as-is on Solaris Devpro-4.2.  Changed
	  the void*'s to char*'s so the compiler could do pointer arithmetic.