This page details planned regressions for the 6.0 release. Many are only in the planning stage at this point and consequently may not happen.
Parser Overhaul Changes (RFC59)
- treating class TEXT expressions as true expressions instead of just doing substitutions. Allows advanced formatting options such as rounding, adding commas to numbers, case adjustments and so on. Totally changes meaning of this attribute.
- drop support for trailing i's to denote case-insensitive searches. Instead use case-insensitive operators for string (=*) and regex (~*). Simplifies expression syntax and lexer code significantly. Case insensitive regex has never worked.
- drop 's for right-hand portion of regex comparisons in logical expressions. Again, simplifies parser and is more inline with RDBMS SQL (PostgreSQL and MySQL do this). Users would just mark the expression with quotes. This would be consistent with regex use elsewhere in mapfiles and would leave regex expressions (e.g. EXPRESSION /foo/) as the only time the 's are used.
Template Tag Changes
- see 60RemoveTemplateTags for a complete list. This simplifies the code (and security) through the use of common presentation functions (e.g. processExtentTag(...)).
CGI Query Mode Changes
- remove all ...MAP modes (e.g. ITEMQUERYMAP). They just bloat the code and documentation. A suitable alternative has existed since 5.4, that is, use a base query mode coupled with an image query format (e.g. ...&mode=itemquery&qformat=png24&...).
Support for STYLEs in LABELs
- this was added at the NYC code sprint. It allows you to define markers and label boxes using styles so you can do things like road shields and complex line work in one pass. This means all the attributes associated with label billboards and billboard shadows can be removed. This simplifies the labelObj and everything associated with it. Simply deprecating the parameters would add undue complexity to the label handling code.
One-pass Query Handling in MapScript
- I screwed this up in 5.6 by introducing the resultsGetShape() method to layers. Only to find out later that the drivers didn't implement things the same way. I propose reverting to a single getShape() method and requiring both passed indexes (if the user wants performance). The first index would be the global shape index suitable for random access to a shape at any time. The second, tile index, would be interpret differently but only one of two ways:
- If a driver supports tiling (basically only shapefiles) then it's truly a tile index and handled as such.
- If a driver doesn't support tiling the index would be interpreted as an index relative to the current result set.
So, for a driver in case 2, it would look at the second index value and decide how to behave (globally or locally). This is basically how it works now, we just need to merge things into a single getShape() method for Oracle and PostGIS drivers. Ultimately this will make users happy and opens up possibilities for supporting two types of query caches (parameters vs. global indexes).
CGI Run-time Validations
- Run-time substitutions are popular and powerful. They also can be used as a route to sql-injection if not used properly. We offer users a way to set default values and value validation but neither are required. I propose changing the latter and not performing substitutions unless a validation is explicitly defined. We do this now for URL-based parameter override.
Rendering backend refactoring
- drop support of RGB/RGBA modes for GD
- agg support required (agg code used for CIRCLE layers)
- imported code from clipper (licence) to support hatch symbols
- rename/change of default formats:
- gif, png => GD
- png24 => AGG. aggpng24 dropped
- svg, pdf => CAIRO
- svg and pdf output produce heavier files than precedent versions (this is a counterpart of being rendered through cairo)
- svg and pdf outputs not fully tested on raster layers
- freetype, libpng, libjpeg and giflib headers required for compilation.
- mapscript is very probably broken, as some api functions have been altered
- aboudreault (09/13/2010) - PHP/Mapscript now builds properly. The functions pasteImage() had support for transparency and angle. Perhaps we could drop the transparency thing.. since it was only supported for GD 8 bits images .. and I'm not sure about the image rotation...
- topics to be discussed:
- refactor the outputformat definitions, decoupling the driver (GD,AGG,CAIRO,GDAL) from the actual image format (GIF, PNG, JPEG...)
- Flash support will no longer work and SWF output not privided by Cairo