MapServer 5.0 has some nice new features. Christopher Schmidt has been blogging the hell out of one. Dynamically allocated arrays (culmination of my work on a container API -- msInsertLayer and friends) is a big one that doesn't get a lot of notice. I think my favorite is this: now you can pretty much stop using mapscript.
Steve Lime did the work. I did the nagging, testing, and the final mapscript touch. Here's a Python usage excerpt from the tests:
>>> import mapscript >>> mo = mapscript.fromstring("""MAP NAME "test" END""") >>> mo # doctest: +ELLIPSIS <mapscript.mapObj; proxy of C mapObj instance at ...> >>> mo.name 'test'
I've explained the motivation previously. You can now transform the problem of writing intricate, error-prone mapscript code into a more tractable template interpolation problem.