|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
The main focus for Roxen WebServer 2.2, scheduled for release in 2001, will be improved graphic capabilities and improved speed and scalability. You are able to try it out for yourself by checking it out from our CVS repository. Please try it out and give us feedback, either as encouraging mails on the roxen mailinglist or as improvement tickets or bug reports in Bug Crunch.
Roxen WebServer 2.2 begins to stabilize from a feature point of view. Hence there is not much exciting information about the last few months. Apart from countless minor improvements, fixes and extensions there are however a few distinct features that are worth mentioning.
- RXML performance - The first part of the RXML cache system was just recently checked in into WebServer. From the very beginning of the WebServer 2.0 development it was intended that subtrees of the RXML parse tree should be cached, hence the extremly modular design of the new RXML which allows smaller parts (the RXML frame objects) to be reused. In this first part of the RXML cache the RXML code is parsed and stored in an internal format called PCode which is then evaluated. If an RXML page is in the cache it only has to evaulate the stored PCode for that page, instead of parsing the XML again. This gives a 20%-70% performance gain, depending on the complexity and type of the RXML.
- NT starter - A new and vastly improved version of the starter program for windows has been added. It has virtually all the features that the UNIX start script has, but with an NT touch. E.g. ntstart --install will register the WebServer application and install it as an NT service while ntstart --remove will uninstall it as an NT service and remove its registry settings.
- Javascript - The javascript support module in SiteBuilder has been moved to WebServer. With it you can easily create javascript popup frames.
- Writefile module - We have got the writefile module as an contribution from Stephen van den Berg. With it you can store data as files from RXML.
- Avg profiling - Collects and presents profiling information about the WebServer process.
- LDAP authentification - Honza has contributed with another LDAP module that connects to the new authentication API in WebServer, letting visitors be authenticated against an LDAP server.
- FTP - The FTP commands EPRT (extended port) and EPSV (extended passive) implemented, which should make communication with e.g. Ange-FTP smoother. Added port range restriction settings.
- RXML types - Martin Stjernholm has added a lot of framework to the RXML parser and a lot of tags have been updated to create the correct output types.
- Emit objects - From the very beginning emit objects were planned but they were implemented just recently. This will allow for streaming emits as well as possibly a lower overhead when dealing with larget tables. It is also possible to use entity objects (RXML.Value) so that an entity value is only evaluated if and when it is inserted into the page. The diremit plugin is updated so that you need not use an attribute to tell if it should create thumbnails or not, it will only create one if you use the thumbnail entity.
- Startup - Several startup sequence releated fixes have been checked in. The init.d_roxen file is updated and the pid handling has been modified to avoid race conditions better.
- GXML - GXML is a new funky graphics tool that is currently under heavy development. It is probably best described with a few examples, but remember that anything can change...
- Streaming audio - Streaming MPEG audio is supported through the new Icecast/Shoutcast support. A modular design makes it simple to create e.g. playlist modules.
- htaccess - The htaccess module is rewritten.
- SNMP - Honza checked in an SNMP agent earlier this week.
- Session module - A module that interfaces against the session handling backend was checked in yesterday.
- Tests - A few hundred more tests have been added to the RXML testsuite.
Since the last status update there has of course been a lot of minor details tweaked, bug fixed and features added. A lot of work has been done with the configuration interface as well as in the backend. These are difficult to make a good summary of, so I refer to the CVS browser for the interested. Some of the highlights in the last months progress:
- Authorization backend - A new authorization system backend has been added. There is currently only two modules available, one for ordinary HTTP authentication and one for cookie authentication, but there will be more high level toys available the closer to release we get.
- Session handling - A session backend has also been able. This is required in order for us to implement a more flexible and, for the client, more lightweight wizard and vform applications. It is also required in order for page applications like vforms and foldlists to function independently on the same page, which they didn't in WebServer 2.1. The RoxenCookie-thing is updated to produce unguessable ID:s, so that they can be used for serious session handling. The state manager, used for foldlist and tablify and now also vform, is further developed so it can also work with sessions. Finally a session cache had been added to the memory cache system. The difference between the memory cache and a session cache is that a session cache has a defined minimum storage time. Work has been done so that the session cache can flush old, but not outdated, session variables to the built in MySQL database.
- id->real_variables - The good old id->variables is now deprecated in favor for id->real_variables. The subtle reason is that most code that uses id->variables is broken without anyone knowing. Under certain circumstances, of which most can be considered browser bugs, the browser sends a variable twice. Almost no code takes this into account and would thus produce an error of some kind. There is however valid situations when a browser sends a list of values; when you use a multivalue select box, so you can not throw away everything but the first or last form value. Hence id->real_variables is a mapping from the variable name to an array with the variable values in it. This array would typically be only one element big.
- Testsuite - The WebServer testsuite has taken leaps forward during the past month, and has exposed a few bugs. You can run the testsuite yourself by starting the server with ./start --self-test.
- Version updates - Work on the next update utility has begun. It should be possible to switch between different versions of the WebServer only by running an action in the administration interface. The new philosofy is "It scales better to waste disk space and bandwith than wasting braincells trying to get a diff/patch solution to work on all operating systems". In practice this means that all versions of WebServer will be stored in directories called things like "server_2.2.66", instead of just "server". The main focus of the new update client is to fetch and install new complete WebServer installations instead of incremental updates.
- Database browser - The database integration has got a nice interface that will simplify the administration of databases. A "database broswer", in which you can navigate through the databases as if they where a directory structure (sort of) combine with a access control interface is currently in place and operational.
Since the WebServer 2.2 has now progressed for a while, I'd thought it might be interesting for you to know what has been done. In its current state it might be a little tricky to get a WebServer 2.2 from the CVS to work, if you would like to check out the new features for yourself (pun intended). Make sure that you have Pike 7.2 installed somewhere in your computer. Symlink the pike binary to the server/bin folder in WebServer 2.2. Then follow the instructions in server/mysql/README. Over to some of the highlights (NOTE that some of these might be removed or altered at a later stage due to "something"):
- Pike - While WebServer 2.1 used the same pike version as the previous WebServer, 2.2 will use the next version of Pike. This will provide a noticeable increase in speed.
- Fonts - Several enhancements has been done in the font support. The major difference is the use of FreeType 2, which provides support for several different font formats including kerning. Font rendering is sharper. Fonts will have the same size in WebServer as in e.g. Photoshop for the same fontsize value. These two changes are compatibility issues currently not dealt with. Absolute spacing on pixel level is possible for bitmapped fonts (folder/tar/cif).
- MySQL - WebServer 2.2 now needs a private MySQL server. File caches such as the image cache and the dump file cache have been rewritten to use MySQL. A graphical MySQL administration tool is under development.
- Email module - The email module provides an <email> tag which enables you to send MIME compliant mail to mail servers over (E)SMTP protocol. Supports attachments, extra headers and signatures.
- Size module - The size module provides the <page-size> tag that calculates the size of a page, including inline images, and gives estimates of download times. It also provides suggestions for optimizations.
- Wizard module - A new wizard module will be provided, that enables you to make a decision based "workflow" between different pages. It will provide the same verification possibilities as <vform> does. It appears to be possible to make it compatible with the old wizard tag as well. If so, the name
will be kept. - Implicit use - The implicit use module is a budget template system. All it does is that it executes <use> tags before the RXML parsing on pages which matches provided globs.
- Whitespace sucker - The whitespace sucker module is a filter module that removes all unnecessary whitespaces from a web page. Although not that useful, it is a good template module for writing your own filters. Also take a look at the Word highlighter.