Patch title: Release 89 bulk changes
Abstract:
File: /welcome/changelog/31-40.page
Key:
    Removed line
    Added line
title "Piant compiler and PDEE changes[lf]releases 31 to 40"


header "Release 40: 2000/6/12"

  list 
    item [Added ] ; link "security enhancement project" "/pliant/welcome/project/security" ; [ that mainly provides secured channel capabilities to Pliant streams.]
    item
      [Some more small improvements in the HTTP server:]
      list
        item [Added the long awaited 'select' to the default style (extension of Yvan Godin code).]
        item { [Better naming of buttons so that restarting the server will not turn these pages to dead links.] ; how "/pliant/protocol/http/style/default.pli" section "function new_button_id" }
        item { [Added 'html_tag' that should help you define new styles.] ; how "/pliant/protocol/http/style/default.pli" section "function html_tag" }
        item { [Made 'begin_html_page' and 'end_html_page' a bit more modular in order to help custom styles creation.] ; how "/pliant/protocol/http/style/default.pli" section "method end_html_page" }
        item [Added access control to the database fields modifyed using HTML forms.]
        item [Added a /browse/ directory in the Pliant tree that demonstates the new virtual trees capabilities in the Pliant HTTP server.]
        item { [Added a parameter to the 'allowed' method in the default style.] ; how "/pliant/protocol/http/style/default.style" section "method allowed" }
        item { [A few more improvements in the HTTP server statistics, and added an entry level report builder.] ; how "/pliant/protocol/http/statistics.pli" }
      item [Added a 'sleep' instruction when an access is rejected.] ; how "/pliant/protocol/common/path.pli" section "method fast_allowed"

header "Release 39: 2000/6/2"

  list 
    item [Removed 'marked' and 'original' fields in 'LocalVariable' data type (they where only used in 'freeze' meta and we can do better without, with a few extra computations).]
    item [Added 'swap' control (naive implementation).]
    item [Plenty of improvements and bug fixes in the database engine (the one included in this release should be the first usable one).]
    item
      [Many changes related to the HTTP server:]
      list
        item [Stupid bug fixed in the HTTP default.style ('html_header' was ignored).]
        item { [Removed a bug in the HTTP server that could bring you a pointer to a freed page.] ; how "/pliant/protocol/http/server.pli" section "method find_dynamic_page" }
        item { [Renamed 'local_ip' to 'local_ip_address', 'remote_ip' to 'remote_ip_address' and 'security' to 'security_level' in the path control mechanism.] ; how "/pliant/protocol/common/path.pli" section "type PathContext" }
        item { [Renamed 'agent' to 'browser', 'environment' to 'form' and removed 'accept' in the HttpRequest type.]  ; how "/pliant/protocol/http/server.pli" section "type HttpRequest" }
        item { [Renamed 'preformated' to 'do_not_use_Int' in the HtmlPage type.] ; how "/pliant/protocol/http/server.pli" section "type HtmlPage" }
        item [Added 'you_can_use_Int' and 'you_can_use_Arrow' in the HtmlPage type if you need ulta fast access in you style sheet.]
        item [Moved 'http_status' in HtmlPage to 'answer_status' in HttpRequest type.]
        item { [Improved 'execute_dynamic_page' so that the executed dynamic page will be recompiled on the fly if source code changed.] ; how "/pliant/protocol/http/server.pli" section "method execute_dynamic_page" }
        item { [Corrected missing / redirection.] ; how "/pliant/protocol/http/server.pli" section "method send_redirect_answer" }
        item [Added virtual URL trees support.]
        item [Added full log support to the HTTP server.]
    item [In the DNS client, return all mail servers, properly sorted, instead of only the first one.]
    item [Removed the year in my copyright at the beginning of each file because I fail to keep it up to date.]
    item [Removed 'load' and 'store' for 'Dictionary' data type (use database engine instead).]
    item [In 'each' function for 'Dictionary' and 'Relation' data types, you now need to insert 'type' keyword before specifying the type of the elments you want to scan.]
    item [In 'each' function for 'Dictionary' and 'Relation' data types, you now need to change 'key' or 'keys' to 'getkey' or 'getkeys' (at a later point, I may add 'keyvalue' and 'keyrange' so that we can scan only a subset).]
    item [Added 'whois' client that will be used at some point to cleverly redirect downloads to various Pliant servers around the world.] ; how "/pliant/protocol/whois/client.pli"


header "Release 38: 2000/5/20"

  image "/pliant/welcome/image/pliant.png" right
    list 
      item { [Contains the first implementation of Pliant database engine.] ; how "/pliant/welcome/project/database" }
      item { [Added a DNS client.] ; how "/pliant/protocol/dns/client.pli" }
      item { [Added 'uInt16_li' 'uInt16_hi' 'uInt32_li' 'uInt32_hi' 'uInt_li' 'uInt_hi' for automatic handling of the indianess.] ; how "/pliant/language/type/number/int_indian.pli" }
      item [Added the missing '<html>' tags in the 'button' related pages.]
      item [Changed the semantic of 'function' field in 'LocalVariable' in order to avoid name clashes in nested functions.]
      item [Removed the 'index' field in 'LocalVariable' (can be deduced: see 'arg_type_meta' in /pliant/language/basic/extend.c)]
      item [Made ':>' meta more restrictive.]
      item [Moved /pliant/encoding/ to /pliant/util/encoding/]
      item { [Added 'NestedSem' data type in order to avoid a dead lock with 'pliant_compiler_semaphore'.] ; how "/pliant/language/schedule/nestedsem.pli" }
      item [Changed 'ip' to 'remote_ip' in the path access control mecanism.]
      item [Added 'local_ip' in the path access control mecanism.]
      item { [Extended 'maybe' implicit declarations (the 'maybe' handling now seems to be a bit weak).] ; how "/pliant/language/compiler/type/type.c" section "function Type_recurse_may_be" } 
      item [Changed Pliant icon to a more usefull one.]
  box right
    image "/pliant/welcome/image/pliant.png"
  list 
    item { [Contains the first implementation of Pliant database engine.] ; how "/pliant/welcome/project/database" }
    item { [Added a DNS client.] ; how "/pliant/protocol/dns/client.pli" }
    item { [Added 'uInt16_li' 'uInt16_hi' 'uInt32_li' 'uInt32_hi' 'uInt_li' 'uInt_hi' for automatic handling of the indianess.] ; how "/pliant/language/type/number/int_indian.pli" }
    item [Added the missing '<html>' tags in the 'button' related pages.]
    item [Changed the semantic of 'function' field in 'LocalVariable' in order to avoid name clashes in nested functions.]
    item [Removed the 'index' field in 'LocalVariable' (can be deduced: see 'arg_type_meta' in /pliant/language/basic/extend.c)]
    item [Made ':>' meta more restrictive.]
    item [Moved /pliant/encoding/ to /pliant/util/encoding/]
    item { [Added 'NestedSem' data type in order to avoid a dead lock with 'pliant_compiler_semaphore'.] ; how "/pliant/language/schedule/nestedsem.pli" }
    item [Changed 'ip' to 'remote_ip' in the path access control mecanism.]
    item [Added 'local_ip' in the path access control mecanism.]
    item { [Extended 'maybe' implicit declarations (the 'maybe' handling now seems to be a bit weak).] ; how "/pliant/language/compiler/type/type.c" section "function Type_recurse_may_be" } 
    item [Changed Pliant icon to a more usefull one.]


header "Release 37: 2000/4/16"

  list 
    item [Includes the FreeBSD port (Oleg Cherevko).]
    item [Renamed 'os_name' to 'os_api'. Added 'os_kernel' and 'os_version' (Oleg Cherevko and Hubert Tonneau).]
    item [Corrected a bug in /pliant/language/stream/multi.pli that led to return random result when querying a file with not a valid name (Brad Emerson).]
    item [Moved the general HTML layout building from the HTTP server to the styles so that it can be overwritten.]
    item [Added an 'alternate' style for the HTTP server in order to demonstate the server side style capabilities of the Pliant HTTP server.]
    item [Corrected a bug in the HTTP server that prevented not found pages to be displayed as so.]
    item [Added 'chmod' at the end of /pliant/install/make-linux-i386-gcc in order to fix the access rights on various Pliant executables.]
    item [New logo, and better images for Pliant site.]


header "Release 36: 2000/4/7"

  list 
    item [Revisited the memory pages reservation mecanism. ]
    note "(more details)"
      title "Memory pages reservation mecanism"
      [Memory pages reservation is a bit tricky in Pliant because the .dump loader has no relocation capabilities so it must obtain the same memory areas. ]
      [Now, the Pliant way to deal with this constrain was complex because OS/2 kernel does not provide the ability to request a given area in the process memory. Since OS/2 version is now dropped, I could swich to a cleaner mechanism that is compatible with both Win32 and Posix API.]
    item [Changed the answered HTTP headers so that pages specifyed as dynamic be never cached by the client.]
    item [Added very basic statistic capabilities to the HTTP server.]


header "Release 35: 2000/4/6"

  list 
    item [Included the needed parts of Linux kernel headers in Pliant tree in order to avoid compile errors when using gcc 2.95.]
    item [Added a more sophisticated scheme in order to check the memory layout under Linux.]
    item [Renamed 'source' to 'how' in the HTTP default style.]


header "Release 34: 2000/4/5"

  [This release contains a new section 'The overall Pliant project' in the documentation that splits Pliant project into several pieces so that contributors may take on some of these. ]
  [The Pliant one man project stage is now over. Welcome to all of you contributors: I hope you will get fun with the parts you will carry, and get great rewards for that in a few years.]

  image "/pliant/welcome/image/happy.jpeg" right
    list 
      item [Corrected the 'mkdir' open flag handling when the file name looks like ] ; italic [ [dq][lb]dq[rb]name[lb]dq[rb] options[dq] ] ; [.]
      item [Added the 'MKD' and 'RMD' instructions (mkdir and rmdir) in the FTP server.]
      item [Added the 'mkdir' and 'rmdir' configuration instructions in the FTP client.]
      item [Added the 'unwrap' function (Patrice Ossona de Mendez).]
      item [Added the 'CChar' data type (John Eikenberry).]
      item [Added the external variables mapping (John Eikenberry).]
      item [When the result access flag 'Access_constant' is set in an expression, then the 'Access_read' flag must now also be set.]
      item [Automaticaly adding of a missing end '/' in the URL submitted to the HTTP server (Gordon january bug report).]
      item [Added file upload capabilities to the HTTP server (multipart forms).]
      item [Corrected a bug in the HTTP client file system.]
      item [Removed some nouse casting function from string to integer (please, use 'parse' or 'eparse' instead).]
      item [Corrected incorrect hanling of 'append' flag under Win32 for 'Stream' data type (Thomas Bakketun).]
      item [Corrected the broken /pliant/language/ui/ansi_terminal.pli for Win32.]
      item [Added 'each' for 'Relation' data type.]
      item [Removed the scope of /pliant/protocol/common/tcp_server.pli]
      item [Recorded 'runtime_compile' as a /pliant/language/compiler.pli function.]
      item
        [Added the 'source' instruction in the .page file format that generate the nice ]
        how "/pliant/welcome/documentation"
        [ icon, and started to update a few pages of the documentation accordingly.]
      item [Added Pliant icon and Helene contribution to the Pliant web site design.]
      item [A few more updates and improvements in the documentation.]
  box right
    image "/pliant/welcome/image/happy.jpeg"
  list 
    item [Corrected the 'mkdir' open flag handling when the file name looks like ] ; italic [ [dq][lb]dq[rb]name[lb]dq[rb] options[dq] ] ; [.]
    item [Added the 'MKD' and 'RMD' instructions (mkdir and rmdir) in the FTP server.]
    item [Added the 'mkdir' and 'rmdir' configuration instructions in the FTP client.]
    item [Added the 'unwrap' function (Patrice Ossona de Mendez).]
    item [Added the 'CChar' data type (John Eikenberry).]
    item [Added the external variables mapping (John Eikenberry).]
    item [When the result access flag 'Access_constant' is set in an expression, then the 'Access_read' flag must now also be set.]
    item [Automaticaly adding of a missing end '/' in the URL submitted to the HTTP server (Gordon january bug report).]
    item [Added file upload capabilities to the HTTP server (multipart forms).]
    item [Corrected a bug in the HTTP client file system.]
    item [Removed some nouse casting function from string to integer (please, use 'parse' or 'eparse' instead).]
    item [Corrected incorrect hanling of 'append' flag under Win32 for 'Stream' data type (Thomas Bakketun).]
    item [Corrected the broken /pliant/language/ui/ansi_terminal.pli for Win32.]
    item [Added 'each' for 'Relation' data type.]
    item [Removed the scope of /pliant/protocol/common/tcp_server.pli]
    item [Recorded 'runtime_compile' as a /pliant/language/compiler.pli function.]
    item
      [Added the 'source' instruction in the .page file format that generate the nice ]
      how "/pliant/welcome/documentation"
      [ icon, and started to update a few pages of the documentation accordingly.]
    item [Added Pliant icon and Helene contribution to the Pliant web site design.]
    item [A few more updates and improvements in the documentation.]


header "Release 33: 2000/3/1"

  list 
    item
      [Added the 'access_object' flag to expressions result access attributs.] ; eol
      [so added 'oarg' 'oarg_rw' ... function parameters types definitions.] ; eol
      [and finaly added 'omap' function.]
    item [Corrected incorrect handling of overflowed constants in the parser.]


header "Release 32: 2000/2/23"

  para
    [The changelog is now using a single section. In the early Pliant days, I through there would be much more releases of Pliant PDEE than of the C part which is the compiler kernel, but in facts, I'm always releasing both at once, even if sometime there is no change at all in the C part. ]
    [Moreover, deciding weather a change is a bug patch or a new feature is sometime difficult, so a single section will do as well.]

  list 
    item [The GCC interface is working again (broken since release 26).]
    item [Moved code_generator.* in /pliant/language/generator/]
    item
      [Changed the 'FileText' type defined in /pliant/admin/text.pli to 'AsciiFile' defined in ]
      link "/pliant/admin/asciifile.pli" "/pliant/admin/asciifile.pli"
      [ and changed the substitution functions.]
    item [Greatly improved the '] ; link "Dictionary" "/pliant/language/type/set/dictionary.html" ; [' data type that can now be used as a very entry level database system.]
    item [Added '] ; link "generate_string_functions" "/pliant/language/compiler/type/type.html" ; [' function for easy 'from string' and 'to string' methods generation when the type is a structure.]
    item [Included the '] ; link "enumerated" "/pliant/language/type/misc/enumerated.pli" ; [' data type preposed by Gordon.]
    item [Corrected bugs in and improved the ] ; link "FTP client" "/pliant/protocol/ftp/client.pli" ; [.]
    item [Added the 'raw' options to the string encoding for 'Str' data type so now, the 'console' function does not need to have a special case for displaying strings.]
    item [Changed the string encoding of 'Bool' data type from] ; fixed [ true ] ; [and]  ; fixed [ false ] ; [to] ; fixed [ [dq]true[dq] ] ; [and]  ; fixed [ [dq]false[dq]]
    item [Added 'CStr' data types (strings with C style encoding) and changed the various OS functions prototypes accordingly.]
    item [Corrected the deeply buggy 'later' tag in functions definition.]
    item [Added 'flagset' data type preposed by Thomas Bakketun.]
    item [Changed 'List insert' to 'List append' as suggested by Gordon on the forum.]
    item [Corrected 'implicit' feature in order to avoid squashing compile time error messages.]


header "Release 31: 2000/1/17"

  header "Corrected bugs in the compiler"
    list
      item [The code generator was wrong. (stack delta was not handled properly when the called function pops the stack on return)]

  header "Changes in the compiler"
    list
      item
        [The 'Relation' data type is now more customizable.]
        note " (more details)"
          title "Changes in the 'Relation' data type in release 31"
          [It used to lock only the target element. ]
          [It now default locks all the three components (the two sources and the target) so expect them to be real objects, ]
          [but it can be asked to have a different behavior through it's 'flags' field.] ; eol
          [In the 'flags' field, bit 0 means lock the first source, bit 1 means lock the second one, and bit 2 means lock the target, so setting flags to 4 will provide the old behavior.]
          para
            [The source of the 'Relation' data type is available in ]
            link "relation.c" "/pliant/language/type/set/relation.c"
          para
            [The trouble with the old implementation is that it could lead to awful bugs:] ; eol
            [If you create a type in a module, then free the module, the type will be freed. ]
            [Now, if you used the Pointer to that type or Array of that type, they are recorded in the pointers or arrays relations, so there is a wrong element in these. ]
            [If you then create new types, then one could be created at the exact same address of the freed one, so there would be a clash in the relation. ]
            [Also it never happened, it was a sad design.] ; eol
            [On the other hand, the trouble with the new implementation is that it may prevent some objects to get freed, but this is a more common, and not fatal trouble (even garbage collectors have so troubles).]
      item [Added a parameter to 'memory_page_reserve' that will allow to load Pliant DLL from another application and then load a .dump file (tricky, but works).]
      item [Some cleanup in the calling convention handling.]

  header "Improvements in the PDEE"
    list
      item
        [Over 300 typo changes (see ] ; link "typo.pli" "/pliant/sample/typo.pli" ; [ for details)]
      item [The Posix plateform is working again.]
      item [Reorganized /pliant/admin/ and /pliant/linux/ subtrees.]
      item [Several improvements in /pliant/admin/file.pli module.]
      item [Added 'options' field to the path access control mechanism.]
      item [Added a clean site wild style selection to the HTTP server.]