|
"If you are out to describe the truth, leave elegance to the tailor." (Albert Einstein)
Timeline
July 28th, 2010 - G-WAN 1.0.95, Client IP fixed
Changes in G-WAN v1.0.95/Linux (version unchanged, build date updated):
- get_env(argv, REMOTE_ADDR, 0); reported a wrong IP address if
any of the a.b.c.d items was > 199; that was because of a typo (a
missing comma) and this is now corrected.
Thanks to 'Jason' for the bug report!
July 27th, 2010 - G-WAN 1.0.95, set GID/UID, charts and read GIFs
Changes in G-WAN v1.0.95/Linux:
- gif_parse() (see the 'chart.c' sample) parses in-memory GIF images;
- gif_build() (see the 'fractal.c' sample) now supports GIF comments;
- added dr_chart() for bar/line/area/dot/pie/ring charts and sparklines;
- added dr_text() to print text in bitmaps using bitmap/TrueType fonts;
- added dr_line(), dr_circle(), dr_rect()/dr_recf() (handy to have them);
- added dr_gradient() for multi-gradient palettes based on RGB values;
- added sw_rnd() a 2^158 PRNG, and hw_rnd() a fast Hardware RNG;
- added get_env() USER_AGENT and FNT_ROOT 'enviroment' variables;
- better documented G-WAN exported functions in the gwan.h header;
- headers (gwan.h, xbuffer.h...) are now stored once: in the gwan folder;
- get_env(argv, REMOTE_ADDR, 0); no longer gives a constant 0.0.0.0;
- cacheadd() no longer fails when called successively for a same entry;
- reduced even further the CPU load by replacing arithmetic routines;
- the '-d' command-line switch now lets you specify a 'group' / 'user' to
dump 'root' privileges when using the daemon mode.
Productivity: C scripts allowed to develop the charts library rapidly. It was
nice to write code and press 'F5' in the Internet browser to see the result
(no wait with compilation/linking and no need to use a tool like GIMP to
manually open every new GIF file made on-the-fly). Once it worked, the code
was then moved into gwan (where, good news, it did not execute any faster).
dr_chart() makes sparklines too: (see the chart.c servlet)
Coming next: LISP/SCHEME (true) 'continuations' and 'closures' - for ANSI C. Waving
wait-states will speed-up client requests initiated by G-WAN (and C scripts) to
back-end servers like database, email, proxy or other app. servers.
June 7th, 2010 - G-WAN 1.0.9, on-the-fly GIF images
Changes in G-WAN v1.0.9/Linux:
- gif_build() (see the 'fractal.c' sample) makes on-the-fly GIF images;
- xbuf_xcat() with "%B" encodes a string in base64 ("%-B" to decode);
- improved source code line numbers lookup in C servlet crash reports;
- minor bug: POST requests were improperly treated as HEAD requests.
gif_parse() will complete gif_build() to let us print text in bitmaps with bitmap fonts (made from TrueType fonts).
Thanks to 'Dopey' for the bug report!
May 27th, 2010 - G-WAN 1.0.8, minor release
Changes in G-WAN v1.0.8/Linux:
- maintenance scalability: the impact of web sites file updates is now null;
- minor bug: servlets updated with a bug can no longer raise a segfault.
Thanking 'SaltwaterC' for the very precise and relevant bug report!
May 20th, 2010 - G-WAN 1.0.7, minor release
Changes in G-WAN v1.0.7/Linux:
- made gwan work on virtualization layers (got memory allocation issues);
- the '-d' and '-k' command line switches now work in every possible case;
- gwan no longer stops working after first servlet on a single-core system;
- corrected the CPU 'brand string' in reports and logs (a cosmetic change);
- xbuf_xcat(&buf, "%k", 1024); gives "1.00 KB" ("%llk" with 64-bit values).
Thank you for the feedback that made it possible to identify various issues!
May 14th, 2010 - "G-WAN 1.0.5 is a wimp" says G-WAN 1.0.6
Changes in G-WAN v1.0.6/Linux (you *must* read the updated manual):
- IP and domain-name based virtual hosts support (no configuration files);
- implemented awaited handlers, the maintenance script, and persistance;
- added cacheadd() and cachedel() to let servlets store entries in cache;
- added getms() and getus() to get current time in millisec and microsec;
- added gzip+deflate on-the-fly compression for server replies >100 bytes;
- extended get_env() to access internal performance options and counters;
- added a '-b' command-line switch to disable the Denial of Service shield;
- added a '-d' command-line switch for a daemon mode (and angel process);
- added a '-k' command-line switch to gracefully stop gwan in daemon mode;
- added a '-r' command-line switch to run ANSI C code (like the ab.c test);
- escape_html() now uses unicode for 8-bit chars and respects word breaks;
- xbuf_xcat() supports the ' pretty thousands flag (%D, %U, %F still work);
- xbuf_xcat() supports the # flag to print a decimal point without decimals;
- xbuf_xcat() supports %b to print 16-bit, 32-bit and 64-bit binary integers;
- servlets life is now limited by a time-out value (no more infinite loops);
- servlets that fail return '500:Internal Error' rather than '404:Not Found';
- minor bug: files deleted on disk no longer return the next cache entry;
- minor bug: removed the limitation for long servlet output (like loan100+);
- major bug: had a hard time to identify and fix this system socket issue ;
- the ab.c benchmark framework now dumps HTTP errors for investigations;
- factor 4 speed gain (the kernel-bottleneck will let you see only 2% of it);
- factor 5 scalability gain (hopefully, you will see 100% of this clever one);
- factor 20 (peak value) of CPU resources savings (in high-concurrencies);
- high-concurrency attacks on long-lasting C scripts are no longer harmful.
Upgrading G-WAN/Windows to v1.0.6 would not make it as fast as on Linux: the Windows kernel has hit the wall (see notes [2] & [3] and Linux vs. Windows). As long as Microsoft does not fix its kernel, it does not make sense for TrustLeap to invest more time on Windows because TrustLeap's goal is to offer the most efficient solution for the benefit of developers and end-users.
December 19th, 2009 - TrustLeap's Forum is now available
The long-awaited G-WAN Forum is now online, thanks to JohnnyOpcode!
December 4th, 2009 - G-WAN Linux/Win32 features are now on par
Notes regarding G-WAN v1.0.5/Linux:
- SIGSEGV/SIGFPE no longer stop G-WAN -they log a crash dump;
- tuned the 'Lorenz waterwheel'/Linux (giving more scalability).
To come soon: connection handlers, a maintenance script, and library samples.
November 30th, 2009 - G-WAN/Linux publicly released!
G-WAN is faster on Linux than on Windows.
Notes regarding G-WAN v1.0.5/Linux:
- SIGSEGV and SIGFPE signals are not (yet) blocked -this is a bit tricky;
- timeouts are not fully tested -but they work at least for trivial tests;
- far-too-slow and idle-for-too-long connections are properly closed.
Notes regarding G-WAN v1.0.5 on Windows:
- a bit of code-cleaning took place (thanks Linux), more to come soon.
Next step: Solaris. After that, G-WAN's serious features will be implemented.
September 9th, 2009 - Minor update
Changes in G-WAN v1.0.4/Windows:
- removed more branching, resulting in more speed (yes, again);
- fixed duplicate timeouts on Windows Server 2003/2008 platforms;
- helped to save Windows from itself with long-lasting TCP connections
G-WAN is faster and faster - despite more features!
August 26th, 2009.
Changes in G-WAN v1.0.3/Windows:
- enhanced the 'Lorenz waterwheel' (even more speed & scalability);
- removed more branching, resulting in even more speed than before;
- implemented an 'anti-flooding' check, protecting system resources;
- finally found how to make timeouts work with IO completion ports;
(now idle and [much too] slow connections are cut when needed).
Keep tuned!
August 15th, 2009 - One Month and half.
Changes in G-WAN v1.0.2/Windows:
- implemented a 'Lorenz waterwheel'-inspired logic for scalability & speed;
- added support for real-time cache updates -without speed penalty;
(no more G-WAN stop/restart to reload updated docs/servlets);
- added support for the If-Not-Match header field (ETag's companion);
- different log files are created for each new day, keeping files smaller;
- local time offsets in the access.log file time-stamps use daylight savings;
- too short requests receive '400:Bad Request' rather than '404:Not Found';
- restored support for absolute URIs (disabled by too stringent checks).
Thank you for your feedback!
July 7th, 2009 - First Week.
Changes in G-WAN v1.0.1/Windows:
- added the missing 'errors.css' file to the /www/imgs sub-folder;
- added support for the (requested) response headers' ETag field;
- fixed a couple of gwan/access/error log files format glitches;
More to come soon!
|