[image] GNU Anubis 4.0 is out!!

Finally, after two years of development process, we released a milestone version, 4.0. Here is the official annoucement, and here is a quick summary of the major changes:

  • The new authentication and authorization mode has been introduced, which does not require client machines to run an AUTH server (identd). It uses standard SMTP AUTH capability.
  • User's database can be kept on the server machine in any of the following formats: plain text, GDBM, MySQL, PostgreSQL.
  • The program is now extensible via Guile.
  • Configuration file grammar has been heavily improved. It features several new syntactical entities, allows nesting of conditional statements to arbitrary depth, and is easily extended using Guile.
  • Added test suite (make check).

No matter how perfect things are made to appear, Murphy's law will take effect and screw it up.

Oh well, it is likely that we'll have to postpone the 4.0 release, because of the serious problems with GNU SASL library 0.2.x. The API has changed heavily, and I can't remember so buggy software in a long time! Current version 0.2.2 doesn't work with Anubis, both while using an old API and while using the new. Fortunately, Sergey hacked it and found the bugs, so Simon should be informed tomorrow. Today I also updated GNU Bison 1.875e translation, but the TP-Robot's gone crazy and refused to cooperate. Bad luck today, sigh.

Yup, socks.c should be now fixed. I was thinking about removing it in a future and use only an external SOCKS library, but (uhm) can't find any with a proper project's home page and being completely free (GPL/LGPL). Am I googling wrong? For instance, Fetchmail supports some SOCKS libraries, but doesn't say anything about their source.

I wrote this:

in Java

import java.util.*;

class StackTest
{
    public static void main (String[] s)
    {
	Stack stack = new Stack ();
	stack.push ("a");
	stack.push ("b");
	stack.push ("c");

	Iterator itr = stack.iterator ();
	while (itr.hasNext ())
	    System.out.print (itr.next () + " ");

	System.out.println ();
	stack = null;
    }
}

and C#

using System;
using System.Collections;

class StackTest
{
   public static void Main ()
   {
       Stack stack = new Stack ();
       stack.Push ("a");
       stack.Push ("b");
       stack.Push ("c");

       IEnumerator e = stack.GetEnumerator ();
       while (e.MoveNext ())
	   Console.Write (e.Current + " ");

       Console.WriteLine ();
       stack = null;
   }
}

The result:

 $ javac StackTest.java
 $ java StackTest
 a b c

 $ mcs StackTest.cs
 $ mono StackTest.exe
 c b a

What the heck? This is confused, but I like more the .NET framework implementation. So, here is my own stack implementation: Stack.java alongside with the test program StackTest.java.

Okay, here is also a similar example in C++:

#include <iostream>
#include <string>
#include <list>

using namespace std;

int main ()
{
  list<string> stack;
  stack.push_back ("a");
  stack.push_back ("b");
  stack.push_back ("c");

  for (list<string>::const_iterator itr = stack.begin ();
       itr != stack.end (); itr++)
    cout << *itr << " ";
  cout << endl;
      
  for (list<string>::reverse_iterator itr = stack.rbegin ();
       itr != stack.rend (); itr++)
    cout << *itr << " ";
  cout << endl;

  return 0;
}
 $ g++ StackTest.cc -o StackTest
 $ ./StackTest
 a b c
 c b a

Notice that I didn't use <stack>, because it is a container adapter and it doesn't provide the iterators.

[image]

I got this new shiny Two-Disc Special Edition of the legendary Enter the Dragon. This is the full uncut version (in my collection, I have also the original release which is about four minutes shorter). I have many good martial arts films, but this one is probably the best ever made. It just kicks ass ;).

[image]

Tonight I went to see Collateral at the local movie theater and I enjoyed it much. Tom Cruise's new look was quite good, his and Jamie Foxx's acting was solid, but the best thing about this movie was the photography. L.A. at night, those wonderful city lights were so amazing... Excellent! Oh, and the soundtrack was also nice.

GNU Anubis 3.9.96 Released

I think the most important addition is a new automatic test suite for the Dixie mode, because doing manual tests takes a lot of time and it is drudging. As I already mentioned it earlier in my blog, we have adjusted the format of plain text database, which allows now for inclusion of empty fields. I'm also very happy to see those less user-visible changes, like the XELO extension, the use of MD5 checksums when checking user configuration file on a remote machine, and the recent error handling improvement.

According to our roadmap, version 4.0 will be released on December 15th, 2004. Uhm, so less than 3 months remain, but we are going to hit that date, you can bet on it :).

...

[photo]