Showing posts with label release. Show all posts
Showing posts with label release. Show all posts

Wednesday, December 26, 2018

STLSoft 1.10.1 (beta 12) released

The latest beta of STLSoft 1.10.1 is available, at https://github.com/synesissoftware/STLSoft-1.10/tree/beta-12.

Getting the beta

As usual, there are two ways to obtain the latest beta:
  1. Select one of the release archives (.zip, .tar.gz) at https://github.com/synesissoftware/STLSoft-1.10/releases/tag/1.10.1-beta12; or
  2. Clone the repo https://github.com/synesissoftware/STLSoft-1.10 and checkout the beta-12 branch (as in "$ git checkout -b beta-10 origin/beta-12").

Changes

The substantive changes are:
  • added stlsoft::sas_to_string() (and related - _m and _w form) function templates, which create instances of std::basic_string<> by applying String Access Shims to the given parameter;
  • added stlsoft::errno_exception exception class (from the 1.12 branch);
  • added stlsoft::locale_scope scoping class;
  • STLSoft's struct tm String Access Shims now work for arbitrary locale;
  • UNIXSTL's timeval String Access Shims now work for arbitrary locale.

I'll describe these changes in a future blog post.

Saturday, December 22, 2018

STLSoft 1.10.1 (beta 11) released

The latest beta of STLSoft 1.10.1 is available, at https://github.com/synesissoftware/STLSoft-1.10/tree/beta-11.

Getting the beta

As usual, there are two ways to obtain the latest beta:
  1. Select one of the release archives (.zip, .tar.gz) at https://github.com/synesissoftware/STLSoft-1.10/releases/tag/1.10.1-beta11; or
  2. Clone the repo https://github.com/synesissoftware/STLSoft-1.10 and checkout the beta-11 branch (as in "$ git checkout -b beta-10 origin/beta-11").

Changes

The substantive changes are:

  • stlsoft::ref_ptr<> class template now has two creator template functions borrow() and own();
  • winstl::environment_variable now has the additional methods:
    • data();
    • equal();
    • equal_ignore_case();
    • exists(); and
    • operator ==() and operator !=().
I'll describe these changes in a future blog post.

Friday, December 21, 2018

STLSoft 1.10.1 (beta 10) released

The latest beta of STLSoft 1.10.1 is available, at https://github.com/synesissoftware/STLSoft-1.10/tree/beta-10.

Getting the beta

As usual, there are two ways to obtain the latest beta:
  1. Select one of the release archives (.zip, .tar.gz) at https://github.com/synesissoftware/STLSoft-1.10/releases/tag/1.10.1-beta10; or
  2. Clone the repo https://github.com/synesissoftware/STLSoft-1.10 and checkout the beta-10 branch (as in "$ git checkout -b beta-10 origin/beta-10").

Changes

The substantive changes are:
  • winstl::process_mutex() now provides two additional ctor overloads that take an additional HANDLE parameter to pass an event that will be signalled in case of an ABANDONED wait, which should (almost) always be treated as a terminal condition. This means that crucial mutex instances may now be connected to a shutdown event;
  • Special String Instances - those types generated by specialisations of stlsoft::special_string_instance_0 and stlsoft::special_string_instance_1 - are now automatically provided (in)equality operators: operator ==() and operator !=(). There are a bunch of such types, including (along with all their _a and _w variants):
    • unixstl::current_directory;
    • unixstl::home_directory;
    • winstl::absolute_path;
    • winstl::current_directory;
    • winstl::home_directory;
    • winstl::host_name;
    • winstl::module_directory;
    • winstl::module_filename;
    • winstl::system_directory;
    • winstl::temporary_directory;
    • winstl::temporary_file_name;
    • winstl::user_name; and
    • winstl::windows_directory.
These will be explained below with a few short examples.

Examples

Process Mutex abandonment

The Old New Thing's "Understanding the consequences of WAIT_ABANDONED" explains the situation well, so I won't repeat here. I'll just include code from a component test for the new functionality in winstl::process_mutex():

    SECTION("waiting on an abandoned mutex with an event") {

        winstl::event         ev(true, false);

        winstl::process_mutex mx(L"my-mx", false, nullptr, ev.handle());

        CHECK(!mx.abandoned());

        std::thread thread([&] {

            mx.lock(); // acquire but don't release, then quit (=> abandon)
        });

        thread.join();

        CHECK(mx.try_lock()); // acquire, which notes the abandonment

        DWORD const r = ::WaitForSingleObject(ev.handle(), 0);

        CHECK(WAIT_OBJECT_0 == r);

        CHECK(mx.abandoned());
    }

FYI: we're changing over to using the Catch Unit-testing library for STLSoft 1.10. (Still currently using Catch v1, tho ...)

Special String Instance(s)

Simply, where (in)equality-comparison would previously have been manual tasks, as in:

  unixstl::current_directory cwd;

  if (0 == ::strcmp("/Users/matt/dev/STLSoft/Releases/1.10", cwd.c_str())
  {}

and

  winstl::current_directory cwd;

  if (0 != ::stricmp("C:\\Users\\matt\\dev\\STLSoft\\Releases\\1.10", cwd.c_str())
  {}

they are now provided with a natural syntax (due to internal use of String Access Shims):

  unixstl::current_directory cwd;

  if ("/Users/matt/dev/STLSoft/Releases/1.10" == cwd)
  {}


and

  winstl::current_directory cwd;

  if (cwd != "C:\\Users\\matt\\dev\\STLSoft\\Releases\\1.10")
  {}


Note that the case-sensitivity is handled automatically. Hence winstl::current_directory's specialising policy template now includes the member constant caseSensitive, which is now required by the special string instance class templates:

  template <typename C>
  struct cwd_policy
  {
    typedef C                         char_type;
    typedef processheap_allocator<C>  allocator_type;
    typedef size_t                    size_type;
    typedef size_type               (*pfn_type)(char_type *, size_type);

    enum { internalBufferSize       =   128 };
    enum { allowImplicitConversion  =   1   };
    enum { caseSensitive            =   0   };
    enum { sharedState              =   0   };

    static pfn_type get_fn()
    {
      return winstl::filesystem_traits::get_current_directory;
    }
  };


There's a further benefit in that the comparisons are all length-aware, so that (tiny) bit more efficient. Which is nice.






Sunday, September 27, 2015

STLSoft 1.9.121 released

Download from https://sourceforge.net/projects/stlsoft/files/

============================================================================


Changes for 1.9.121 (26th September 2015)


STLSoft:
========

~ stlsoft/conversion/char_conversions.hpp:
~ stlsoft/conversion/truncation_test.hpp:
+ stlsoft/internal/cccap/clang.h:
~ stlsoft/util/integral_printf_traits.hpp:
~ stlsoft/util/limit_traits.h:
~ stlsoft/util/std/iterator_helper.hpp:

+ Clang-compatibility


WinSTL:
=======

~ winstl/util/struct_initialisers.hpp:

~ VC++ 11/12/14 compatibility


============================================================================


Monday, January 11, 2010

Monday, September 15, 2008

VOLE 0.6.1 broken by bad STLSoft 1.9.53 - 1.9.54 now released

A VOLE user reported problems with compiling VOLE 0.6.1, which are a result of (i) my having released an incomplete STLSoft 1.9.53, and (ii) when using GCC, which does not define UDATE, some of WinSTL's conversion shims - specifically to_FILETIME(DATE const&) and to_SYSTEMTIME(DATE const&) - were not available.

Both issues are now fixed, with the recently released STLSoft 1.9.54.

Friday, September 12, 2008

VOLE 0.6.1 released

VOLE version 0.6.1 is released.

It now supports time return values, of types DATE (via the VOLE type date_t), FILETIME, and SYSTEMTIME, as in:

vole::object obj = ...
SYSTEMTIME updated = obj.get_property<SYSTEMTIME>(L"Updated");

Thursday, September 11, 2008

FastFormat 0.2.1 (alpha 3) released

FastFormat 0.2.1 (alpha 3) is released.

It contains a fix to a defect in the implicit link header, and also a lot of groundwork for widestring support in the near future. (Actually, all the widestring support is now in the core library - just the makefiles, examples and tests need to be correspondingly updated.)

Pantheios 1.0.1 (beta 156) released

Pantheios 1.0.1 beta 156 of is released.

It contains a revised naming convention for makefiles, such that every makefile is now in its
   own directory, and is called 'makefile'. The following examples
illustrate:
build/vc9/makefile => build/vc9/makefile
build/vc9_x64/makefile => build/vc9.x64/makefile
build/gcc34/makefile.win32 => build/gcc34.win32/makefile
build/gcc34/makefile.unix => build/gcc34.unix/makefile
build/gcc41/makefile.unix => build/gcc41.unix/makefile
etc.

Saturday, September 6, 2008

STLSoft 1.9.51 released

This latest release contains only two changes, but they're interesting nonetheless.

The first is a workaround for a defect in VC6. This was found in stlsoft::conversion_error, and comes about as follows. stlsoft::conversion_error is defined along the lines of:


class conversion_error_base

  : public std::runtime_error

{

  . . .

public: // Construction

  virtual ~conversion_error_base() = 0;

  . . .

};



class conversion_error

  : public conversion_error_base

{

  . . .

};



The highlighted line is the problem for VC++ 6. The code it generates is defective such that when an instance of any derived class is thrown, the exception does not get thrown, merely hangs about in the current scope, and the program execution carries on as if no exception was thrown.

The second change is a correction for a defect in the string access shim functions for the SYSTEMTIME type, whereby conversion of an invalid time resulted in a fault, because the calculation for the total length of the resultant string did not take account the fact that the Windows Time API functions returns 0 if the time instance is invalid. The consequence of fixing this defect has resulted in some nice refactoring, so there's some silver lining.

Coming soon: releases of VOLE, flecxx, Pantheios, and FastFormat.

Wednesday, September 3, 2008

FastFormat is unleashed: v0.2.1 (alpha 1) released

FastFormat is an Open Source C/C++ Output/Formatting library, whose design parameters are 100% type-safety, efficiency, genericity and extensibility. It is simple to use and extend, highly-portable (platform and compiler-independent) and, best of all, it upholds the C tradition of you only pay for what you use.

FastFormat supports output/formatting of statements of arbitrary complexity, consisting of heterogeneous types.

FastFormat writes to output "sinks", which can be of arbitrary type. It implicitly supports any type that is structurally conformant with the standard library's string, and the library includes adaptors to allow writing to std::ostream, FILE*, speech (currently Windows-only), STLSoft's auto_buffer, C-style string buffers, and character buffers. Adaptation to a new type merely requires the definition of a single function.

FastFormat is fast. The processing of each statement involves at most one memory allocation to hold the entire statement, and each statement element is measured and copied exactly once. As a consequence, the library is on a par with (the type-unsafe) C's Streams (printf()-family) of functions, faster than C++'s IOStreams, and considerably faster than Boost.Format. Comprehensive performance analyses are underway; initial results of a realistic scenario on Windows (32-bit) with Visual C++ 9 shows FastFormat is approximately 3 x faster than C's Streams, 6 x faster than C++'s IOStreams, and 17 x faster than Boost.Format.

FastFormat supports I18N/L10N by using numbered arguments, enabling reordering of arguments by exchanging format strings. The library comes with a number of resource bundles, classes whose instances can load sets of localised resource strings for use as format strings.

FastFormat does not contain any compiler-specific or platform-specific constructs. It supports UNIX (including Linux and Mac OS-X), and Windows, and should work with any operating system. It is known to be compatible with Comeau (4.3.3+), GCC (3.4+), Intel (8+), Metrowerks (8+), Microsoft Visual C++ (6.0+), and should work with any reasonably modern C++ compiler.

FastFormat is completely free and includes source released under a BSD-style license. Commercial customisations and related consultancy are provided by Synesis Software Pty Ltd; http://synesis.com.au/contact.html)

Release 0.2.1 alpha 1 is the first public release.

Note: this release of FastFormat requires STLSoft 1.9.50, or later. Download from http://stlsoft.org/

Download from: http://sourceforge.net/project/showfiles.php?group_id=177382&package_id=204396

Discuss at: http://sourceforge.net/forum/forum.php?forum_id=612781

FastFormat website: http://fastformat.org/

Monday, September 1, 2008

FastFormat about to drop ... and it's FAST!

I'm now less than two days away from releasing FastFormat. All that's left to do is:
  • verify on 64-bit Linux
  • do the docs (a basic first cut; nothing mega good)
  • try and find out why DMC++ does not like it (as usual, it's the odd-man-out with templates)
  • do a decently comprehensive lot of performance tests
As a first go at verifying the performance, I've run a test which formats thusly:

std::string arg0 = "abc";

const char arg1[] = "def";

stlsoft::simple_string arg2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";


fastformat::fmt(s, "The first param '{0}', and the second '{1}', and the first again '{0}'. Finally the third '{2}'", arg0, arg1, arg2);


Note: this is for one compiler (VC++ 9), and one scenario (described above), so we can't draw any way-out conclusions as yet. But the first results are pretty encouraging to say the least:

IOStreams: 679561us
Boost.Format: 1901109us
sprintf(): 346776us
FastFormat: 112016us
IOStreams:FastFormat: 6.067
Boost.Format:FastFormat: 16.97
sprintf:FastFormat(): 3.096

These numbers mean that, for that scenario with that compiler, FastFormat is 3x faster than sprintf, 6x faster than the IOStreams, and 17x than Boost.Format.

Given that it's 100% type-safe, infinitely extensible, and supports I18N/L10N, I hope that it's going to be well received.

Saturday, August 23, 2008

Pantheios 1.0.1 (beta 150) released

Pantheios is an Open Source C/C++ Logging API library, offering an optimal combination of 100% type-safety, efficiency, genericity and extensibility. It is simple to use and extend, highly-portable (platform and compiler-independent) and, best of all, it upholds
the C tradition of you only pay for what you use.

Pantheios supports logging of message statements of arbitrary complexity, consisting of heterogeneous types.

Pantheios supports filtering of log messages based on severity level including (but not limited to) the eight levels defined by the SysLog protocol.

Pantheios supports back-end output, individually and in combination, to stderr/stdout, SysLog (including a custom implementation of the SysLog protocol for Windows), Windows debugger, Windows event log, COM Error Object, Speech, or any custom back-end extension you care to write. Importantly, Pantheios is readily extended to use the existing transport mechanisms of feature-rich logging libraries such as ACE, log4cpp, log4cplus, log4cxx.

Pantheios does not contain any compiler-specific or platform-specific constructs. It supports UNIX (including Linux and Mac OS-X), and Windows, and should work with any operating system. It is known to be compatible with Borland (5.5.1+), Comeau (4.3.3+), Digital Mars (8.45+), GCC (3.2+), Intel (6+), Metrowerks (8+), Microsoft Visual C++ (5.0+), and should work with any reasonably modern C++ compiler.

Pantheios is completely free and includes source released under a BSD-style license. Commercial customisations (of front-/back-ends are provided by Synesis Software Pty Ltd; http://synesis.com.au/contact.html)

Release 1.0.1 beta 150 incorporates:
* fixed defect in fe.N, whereby a negative catch-all severity ceiling would not be respected
* other minor adjustments/improvements to fe.N
* added unit-test for fe.N
* bundles xTests 0.8.5
* NOTE: Now requires STLSoft 1.9.48
* NOTE: These are breaking changes. Any code using the extant fe.N front-end library will need to be edited and re-compiled

Note: this release of Pantheios requires STLSoft 1.9.48, or later.

Download from: http://sourceforge.net/project/showfiles.php?group_id=141831&package_id=155759

Discuss at: http://sourceforge.net/forum/forum.php?forum_id=475313

VOLE 0.5.1 released

Version 0.5.1 of VOLE released.

Changes:
  • renamed coercion level nonDestructiveTruncation to nonDestructiveCoercion
  • added com_return_traits<float>
  • added com_return_traits<double>
  • changed behaviour for com_return_traits<bool>, com_return_traits<short>, com_return_traits<int>, com_return_traits<long>, com_return_traits<std::string> and com_return_traits<std::wstring>
  • added test.unit.return_traits.builtins
  • added test.unit.return_traits.std_types

xTests 0.8.5 released

Version 0.8.5 of xTests released.

Changes:
  • added call to XTESTS_TEST_PASSED() when an expected exception is received
  • added more integer specialisations of xtests_failure_reporter<>
  • fixed a defect in the approximate comparison of negative floating-point numbers

1.9.48 released

Just released 1.9.48, which contains an essentail fix to stlsoft::trim_all(), and a number of additions to COMSTL.