Home      Technology      About us      Developers      FAQs      Contact
   The Challenge


   G-WAN's Forum

   Timeline
   

"If you are out to describe the truth, leave elegance to the tailor."
(Albert Einstein)

Timeline

August 20th, 2010 restored connection time-outs

Changes in G-WAN v1.0.97/Linux:

  - restored adaptative time-outs (a glitch since v1.0.6 disabled them).

A lack of adaptative time-outs does not have consequences on performances (you can disable G-WAN/Linux time-outs with the '-b' command-line switch) but it makes Web servers like Apache (300 seconds) or IIS (120 seconds 'after accept') vulnerable to denial of service attacks that open connections and send/receive data much too slowly (saturating your Web server's memory) or do not send HTTP request at all (saturating the system memory).

Apache and IIS neglect this deadly issue to the point where a single ADSL client can put down the so-called 'rock-solid' servers.

'Slowloris' is a very limited example of what damages can be done in this matter: MICROSOFT Bing robots are much more agressive and sneaky (but their tricks are not visible in Web server log files so nobody complains).

G-WAN uses adaptative time-outs (rather than fixed-size time-outs) to defeat all the possible cases. This mechanism allowed G-WAN/Windows to survive millions of such (duly logged) attacks since June 2009 and it is now available in G-WAN/Linux (just in case, like me, you want to stay online).

August 7th, 2010 #pragma link and #pragma include

Changes in G-WAN v1.0.96/Linux:

  - added script support for '#pragma link' (for .c, .obj, .a/.lib, .so/.dll files);
  - added script support for '#pragma include' (for additional include paths);
  - created a gwan/include folder to store all the files shared by servlets;
  - added servlet support for md5/crc32/adler32 and gzip/lzjb compressors;
  - added log_err() to let servlets dump text in their virtual host's error.log;
  - new samples: trace.c (tracing code) and sqlite.c (SQL database engine).

Many libraries are already installed in /usr/lib on Unix systems. Now, G-WAN lets you play with them by just using a couple of #pragmas (see sqlite.c).

Look at the XAMPP or PHP projects -and let G-WAN use the same C libraries to deliver features like databases (gdbm, SQLite, mySQL, PostgreSQL), XML (Expat, libxml), RegEx, JSON or XML parsing, PNG/JPEG/MPEG, VoIP, mCrypt, mHash, FreeType (TrueType fonts), fPDF and Ming (Flash), SMTP/POP3/IMAP, OpenLDAP, CURL, zZIP, etc.

Who said that using C was about re-inventing the wheel?

July 28th, 2010 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 set GID/UID, Charts and reading 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).

G-WAN area/bar/dot/line/pie/ring charts

dr_chart() makes sparklines too: G-WAN sparklines (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 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 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 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" for 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 (server replies >100 bytes);
  - extended get_env() to access internal performance options/counters;
  - added a '-b' command-line switch to disable the Denial of Service shield;
  - added a '-d' command-line switch for a daemon mode (angel process);
  - added a '-k' command-line switch to gracefully stop gwan (daemon);
  - added a '-r' command-line switch to run C scripts (like the ab.c test);
  - escape_html() uses unicode for 8-bit chars and respects word breaks;
  - xbuf_xcat() supports the ' pretty thousands (%D, %U, %F still work);
  - xbuf_xcat() supports the # flag (decimal point with no decimals);
  - xbuf_xcat() supports %b to print 16-bit, 32-bit and 64-bit binary ints;
  - 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 (loan100+);
  - major bug: had a hard time to identify/fix this system socket issue;
  - the ab.c benchmark framework now dumps HTTP errors (IIS locks);
  - 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 (high-concurrencies);
  - high-concurrency attacks on long-lasting 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 available

The long-awaited G-WAN Forum is now online, thanks to JohnnyOpcode!

December 4th, 2009 G-WAN Linux/Win32 features 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 MUCH 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:

  - added the -b command-line switch: no DoS shield (for benchmarks);
  - 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 Denial of Service Shield

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 trigger 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!



Copyright © 2007-2010 TrustLeap, All Rights Reserved     Legal Notices