📄 changes.html
字号:
<html><!-- #BeginTemplate "/Templates/tmpl.dwt" --><head><!-- #BeginEditable "doctitle" --> <title>PTypes: Changes</title><!-- #EndEditable --> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><link rel="stylesheet" href="styles.css"></head><body bgcolor="#FFFFFF" leftmargin="40" marginwidth="40"><p><a href="../index.html"><img src="title-1.7.gif" width="213" height="34" alt="C++ Portable Types Library (PTypes) Version 1.7" border="0"></a> <hr noshade><!-- #BeginEditable "body" --> <p class="hpath"><a href="index.html">Top</a>: <a href="intro.html">Introduction</a>: Changes </p><p><br><b>Version 1.7.5</b></p><ul><li>A <span class="lang">tv_usec</span>-related bug fixed in all socket/pipe waiting and polling routines. Non-integral timeout values were treated incorrectly in the previous versions of the library. (<a href="http://sourceforge.net/tracker/index.php?func=detail&aid=652513&group_id=56008&atid=479024">Bug report</a>)</li><li>Fixed return type for <span class="lang">tstrmap::operator[]</span>. (<a href="http://sourceforge.net/tracker/index.php?func=detail&aid=661312&group_id=56008&atid=479024">Bug report</a>)</li><li><span class="lang">instm::putback()</span> added.</li></ul><p><b>Version 1.7.4</b></p><ul><li>A new class <a href="unit.html">unit</a> has been added. Unit is a mini-process with its own <span class="lang">main()</span> and input/output 'plugs'; several unit objects within the framework of one application can be connected to form pipes, like processes in the Unix shell.</li><li>A new method for creating local pipes, <a href="streams.infile.html">infile::pipe()</a>, has been added.</li><li>Null output stream object has been added as a static variable <a href="streams.stdio.html">pnull</a>.</li><li><span class="lang">__ptypes_version</span> and the DLL version resource were not incremented in the previous release. Now they both show 1.7.4.</li><li><span class="lang">outmemory::get_strdata()</span> added.</li></ul><p><b>Version 1.7.3</b></p><ul><li>Wrapper templates for <span class="lang">objlist</span>, <span class="lang">strlist</span> and <span class="lang">strmap</span> have been created. These templates help to avoid extra (dangerous) pointer typecasts and provide better compile-time type checking when using lists with objects derived from <span class="lang">unknown</span>. See introduction to <a href="lists.html">Lists</a>.</li><li>A new class template <a href="unknown.html">compref</a> has been added that implements a 'smart' pointer to a reference-counted <span class="lang">component</span> object.</li><li>Function template <a href="async.utils.html">tpexchange()</a> has been added as a type-safe wrapper for <span class="lang">pexchange()</span>.</li><li>New methods <a href="inet.ipstream.html">ipstream::get_myport()</a> and <a href="inet.ipmessage.html">ipmessage::get_myport()</a> have been added.</li></ul><p><b>Version 1.7.2</b></p><ul><li>Fixed compilation and linking parameters for Linux and FreeBSD to build the shared library correctly (thanks to Alan Eldridge).</li><li>Bug fixed in wshare/urlutils.cxx: the URL parameters (protocol parameters, query string and fragment) were treated incorrectly in previous versions.</li></ul><p><b>Version 1.7.1</b></p><ul><li>A new section called "<a href="deploying.html">Deploying the shared (dynamic) library</a>" is now included in the documentation. It describes in detail the procedure of using and deploying the shared (dynamic) library, discusses advantages and disadvantages of dynamic linking vs. static linking.</li><li>PTypes.DLL now contains a version resource. In addition, the library declares a global variable __ptypes_version, which can be checked at run-time or during installation on Unix.</li><li><span class="lang">strlist::compare()</span> is declared as virtual to allow alternate sorting algorithms in descendant classes.</li></ul><p> <b>Version 1.7.0</b></p><ul><li><a href="variant.html">Variant</a> class implemented. A <span class="lang">variant</span> variable can hold values of many fundamental types (int, bool, datetime, float, string) plus associative arrays of variants and reference-counted pointers to objects. Variants can be used for designing interpreters for higher-level languages, designing or working with databases and spreadsheets, etc.</li><li>Message-oriented networking classes (<a href="inet.ipmessage.html">ipmessage</a> and <a href="inet.ipmsgserver.html">ipmsgserver</a>) implemented based on the UDP protocol.</li><li>The library now compiles both as a shared object (DLL on Windows) and a static library. The shared object (or DLL) is placed in <span class="lang">so/</span> when building the library.</li><li><span class="lang">outstm::putf()</span> is now atomic with respect to multithreading.</li><li><span class="lang">Ipsocket</span> renamed to <span class="lang">ipstream</span>, <span class="lang">ipserver</span> renamed to <span class="lang">ipstmserver</span>. The old names are available as typedef's for compatibility.</li></ul><p><b>Version 1.6.1</b></p><ul><li>Read/write lock (<a href="async.rwlock.html">rwlock</a>) algorithm improved to be "fairer" with respect to both readers and writers.</li><li><a href="async.trigger.html">Trigger</a> algorithm fixed to be fully compatible with Windows event interface.</li><li><span class="lang">psleep()</span> fixed on Solaris to be reentrant (multithreaded).</li></ul><p><b>Version 1.6.0</b></p><ul><li>Portable named pipes added - <a href="streams.namedpipe.html">namedpipe</a> and <a href="streams.npserver.html">npserver</a>.</li><li>Read/write lock class <a href="async.rwlock.html">rwlock</a> (a smarter mutex) added.</li><li><a href="async.trigger.html">Trigger</a> (a simplified semaphore) class added.</li><li>Memory stream classes <a href="streams.inmem.html">inmemory</a> and <a href="streams.outmem.html">outmemory</a>, previously undocumented, now described in section Streams.</li><li> Windows InterlockedXXX calls replaced with internal assembly code to work as expected even on Win95.</li><li>A string-to-int (64-bit) conversion routine added - <span class="lang">stringtoi()</span>.</li><li><span class="lang">ipsocket::get_myip()</span> added.</li><li>Dynamic string assignment and <span class="lang">itostring()</span> optimized.</li><li>Better diagnostics messages for <span class="lang">ipserver</span>.</li></ul><p><b>Version 1.5.3</b></p><ul><li>Token extraction methods can now optionally limit input and throw en exception if the token exceeds the limit. This new feature is targeted to real-world networking applications.</li><li>A new section "<a href="portability.html">Portability and Performance Issues</a>" and an <a href="ref.html">alphabetical reference</a> of all public symbols added in the documentation.</li><li>Examples for the sockets interface and some other modules rewritten to be cleaner and more educational.</li><li> GCC 3.x compilation problem solved in pinet.h (friend class declaration).</li></ul><p><b>Version 1.5.2</b></p><ul><li> Dynamic strings have been optimized and thoroughly tested. Compared to MFC CString class, PTypes dynamic strings now show much better performance.</li><li> Bug fixed in <span class="lang">decodedate()</span>. This function worked incorrectly for the last day (12/31) of each leap year.</li></ul><p><b></b><b>Version 1.5.1</b></p><ul><li> Documentation cleanup.</li><li> A sample compile-time module for wshare, which responds to http://hostname/.about requests. Code cleanup in wshare.</li></ul><p><b>Version 1.5.0</b></p><ul><li> Wshare is becoming modular/scalable. Custom handlers for a new HTTP method, file extension or a nonexistent path can be easily incorporated into wshare at compile time. Currently this feature is documented only in the source files.</li><li> Wshare can show the server status report through http://localhost/.wstat</li><li> Standard input, output and error devices are declared in <pstreams.h> as pin, pout and perr stream objects respectively.</li><li> New printf-style formatted output method <span class="lang">outstm::putf()</span>. Accepts only a subset of format specifiers common to all platforms.</li><li> Bug fix in <span class="lang">outstm::put()</span>.</li><li> Handle leak on Windows fixed.</li><li> realloc-related memory leak on Unix fixed.</li><li> Bug in string class fixed: <span class="lang">s += s</span> was working incorrectly in previous versions.</li></ul><p><b></b><b>Version 1.4.1</b></p><ul><li> The MD5 module is replaced with L. Peter Deutsch's implementation. Please, see comments in <span class="lang">src/pmd5.cxx</span>.</li><li> Wshare: code cleanup in various modules; Borland C++ port (<span class="lang">wshare/wshare.mak</span>); a new option <span class="lang">-x</span> to ignore default index files and always show directory indexes.</li><li> Include directives in <span class="lang">src/pipserver.cxx</span> and <span class="lang">src/pipsocket.cxx</span> have been reordered to avoid compiler errors on some Linux systems.</li></ul><p><b>Version 1.4.0</b></p><ul><li> A big sample program called wshare is now included in the project. Wshare is a simple and fast HTTP/1.1 web server; it demonstrates the full power of PTypes. Currently wshare lacks server-side scripting functionality, however, it can be used to quickly share local files over the web.</li><li> Waiting for data with timeout on a socket object is implemented (<span class="lang">ipsocket::waitfor()</span>).</li><li> <span class="lang">SIGPIPE</span> is now blocked on Unix when using PTypes' sockets.</li><li> A new utility function <span class="lang">utodatetime()</span> for converting Unix <span class="lang">time_t</span> values to PTypes datetime.</li><li> Atomic exchange for pointers is implemented separately, since on 64-bit platforms the size of a void pointer differs from the size of int.</li><li> A bug fix for autofree threads. Please note that semantics of <span class="lang">thread::waitfor()</span> has changed (see documentation for details).</li></ul><p><b></b><b>Version 1.3.2</b></p><ul><li> Ported to MacOS X (Darwin).</li><li> Important fixes in the thread module (<span class="lang">src/pthread.cxx</span>): PTypes now ensures proper operation and memory cleanup on all platforms, even with buggy implementation of the POSIX threads specs.</li><li> Compiled under Linux/Alpha, Linux/PowerPC and Linux/Sparc with minor fixes: <span class="lang">ipaddress</span> type is now castable to unsigned long instead of signed long; variables of type ipaddress must be compared with ipnone instead of -1.</li></ul><p><b>Version 1.3.1</b></p><ul><li> CVS repository setup at SourceForge.net (see the main page for details).</li><li> Various fixes in the documentation.</li><li> Fixes in the BCC makefile <span class="lang">src/ptypes.mak</span>.</li></ul><p><b></b><b>Version 1.3</b></p><ul><li> <a href="inet.html">IP socket</a> manipulation classes and utilities, finally!</li><li> The new <a href="time.html">datetime</a> type along with time/calendar manipulation utilities.</li><li> Timed semaphore class <a href="async.semaphore.html">tsemaphore</a>.</li><li> The library now compiles within a namespace "pt" by default.</li><li> <span class="lang">semaphore::post()</span> and <span class="lang">semaphore::wait()</span> now do not return any values. If these functions fail, a fatal non-recoverable error is raised instead of returning an error code to the caller. It is senseless to run a multithreaded application if the system fails to operate semaphores.</li><li> Bug fixed in non-Intel version of <span class="lang">pexchange()</span>.</li></ul><p><b>Version 1.2</b></p><ul><li> The entire library can now be conditionally enclosed within a namespace to avoid name conflicts in large projects. By default the library does NOT compile within a namespace.</li><li> Several fixes to improve performance of the dynamic string class, as well as to make it thread safe (see introduction to <a href="string.html">string class</a>).</li><li> Ported to SunOS. (The library should now compile virtually on any Unix platform. Need some time and access to different computers.)</li><li> Compiled with Borland C++ 5.5 (aka C++ Builder) under Windows. The makefile is <span class="lang">src/ptypes.mak</span>.</li><li> MD5 (message digest) algorithm is implemented as an output stream class <a href="streams.md5.html">outmd5</a>.</li><li> Bug fixes in <span class="lang">src/pinstm.cxx</span> and <span class="lang">src/poutstm.cxx</span>.</li></ul><p><b>Version 1.1 was the first public release</b></p><!-- #EndEditable --> <hr size="1"><a href="../index.html" class="ns">PTypes home</a></body><!-- #EndTemplate --></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -