Opened 4 years ago

Closed 3 years ago

#12483 closed enhancement (fixed)

libsigc++-3.0.4 (wait for glibmm-3.16)

Reported by: Douglas R. Reno Owned by: Bruce Dubbs
Priority: normal Milestone: 10.1
Component: BOOK Version: SVN
Severity: normal Keywords:


New major version


This is the first stable release of sigc++-3.0, installable in
parallel with sigc++-2.0.
Changes compared to the latest unstable release:

* Fix tuple_transform_each() for libc++
  (Kjell Ahlstedt) Issue #25 (Jeff Trull)

* Remove some obsolete documentation
  (Kjell Ahlstedt)

* Make compile with clang++
  (Kjell Ahlstedt)
* Don't call static method via instance
  (Murray Cumming)

Change History (8)

comment:1 by Bruce Dubbs, 4 years ago

Owner: changed from blfs-book to Bruce Dubbs
Status: newassigned

comment:2 by Bruce Dubbs, 4 years ago

Milestone: 9.1hold
Summary: libsigc++-3.0.0libsigc++-3.0.0 (wait until v3 is needed)

We do not need to install this right now. The only packages that use libsigc++ are cairomm and glibmm. Both of those explicitly call for version 2.0.

Moving to hold.

comment:3 by Bruce Dubbs, 3 years ago

Owner: changed from Bruce Dubbs to lfs-book
Status: assignednew

comment:4 by Pierre Labastie, 3 years ago

Owner: changed from lfs-book to blfs-book

comment:5 by Pierre Labastie, 3 years ago

Now cairomm-1.16.0 needs v3. Three packages depend on libsigc++: glibmm, cairomm, and pavucontrol.

Present version of glibmm (2.64.x) needs v2. But next version (2.66.x) will require v3

For pavucontrol, most recent development still requires v2.

I guess we should be prepared to live with both versions for a while...

comment:6 by Bruce Dubbs, 3 years ago

Milestone: hold10.1
Owner: changed from blfs-book to Bruce Dubbs
Status: newassigned
Summary: libsigc++-3.0.0 (wait until v3 is needed)libsigc++-3.0.4 (wait for glibmm-3.16)

comment:7 by Bruce Dubbs, 3 years ago

3.0.4 (stable)


  • Meson build: Set default value of the 'warnings' option to 'min'
  • NMake Makefiles: Several improvements
  • docs/reference/: Update for Doxygen >= 1.8.16


  • docs/manual/libsigc_manual.xml: Update signal and slot syntax

The tarball for 3.0.4 has been created with 'meson dist'. If you build with Autotools from the tarball, please read the relevant part of

3.0.3 (stable)


  • docs/docs/reference/ Check if perl is found
  • Describe building with Meson


  • Add example of using libsigc++ with Qt


  • Replace C-style casts with static_cast<>

3.0.2 (stable)

  • Build: Meson build improvements.

3.0.1 (stable)

  • Build:
    • Add meson build, alongside the existing autotools and CMake builds.
    • CMake: Fix the MSVC build, enable warnings, and disable unnecessary warnings, with MVSC.
  • connection: Allow copying of empty connections.
  • sigc++/adaptors/bind.h: Make bind_functor::bound_ public. (Used by sigc::visitor::do_visit_each().
  • test_limit_reference: Avoid virtual-move-assign warning (seen with g++ 9.2)
  • signal: slot_iterator_buf: Remove unused T_result default type
  • tests: Slight cleanups
  • Remove unused #ifdefed code.

3.0.0 (stable)

This is the first stable release of sigc++-3.0, installable in parallel with sigc++-2.0. Changes compared to the latest unstable release:

  • Fix tuple_transform_each() for libc++


  • Remove some obsolete documentation


  • Make compile with clang++
  • Don't call static method via instance

2.99.13: (unstable)

  • Replace the deprecated std::result_of with std::invoke_result (Kjell Ahlstedt) Issue #19





  • Add some necessary #include directives

2.99.12: (unstable)

  • Avoid compiler warnings from function pointer conversions


  • Replace the Visual Studio project files with MSVC NMake project files Add MSVC_NMake/README.txt for Visual Studio builds
  • cmake: Require C++17 support


  • Update links in README,, libsigcplusplus.doap
  • README: Update compiler requirement

2.99.11: (unstable)

libsigc++-3.0 now requires C++17. Use of C++17:

  • Use std::apply to simplify implementation.
  • Use std::invoke to make implementation more generic.
  • Use constexpr if to simplify implementation.


  • Require mm-common 0.9.12

2.99.10: (unstable)

  • slot_base::set_parent(): Create a dummy slot_rep if necessary
  • visit_each.h: Add an #include.

2.99.9: (unstable)

  • signal_impl::clear(): Don't clear the slot list during signal emission, to prevent a segfault. And add a test for this.
  • Remove signal_base::erase() and signal_impl::erase().
  • Various minor code cleanups.
  • Windows: Update the MS Visual Studio build.

2.99.8: (unstable)

  • signal_impl:
    • Use std::weak_ptr<signal_impl> in connected slots, to avoid a memory leak.
    • clear(): Really avoid erasing the slots prematurely.
  • slot_rep: Make destructor, destroy, and clone() virtual, instead of using function pointers that do the same thing.


  • Visual Studio builds: Require Visual Studio 2017.
  • Add tests/, to run the tests under valgrind.
  • Make --disable-benchmark work.
  • Make silent builds really silent.

2.99.7: (unstable)

  • connection, slot_base: Use an internal::weak_raw_ptr<> to simplify the code.
  • signal_base: Do not derive from trackable.
  • slot_rep: Pass a slot_rep*, not notifiable*, to destroy().
  • signal_impl: Do not derive from notifiable.

2.99.6 (unstable):

  • signal: Remove slots() and the container that it returns, and the iterator for that container. See
  • signal: connect(): Return a connection, instead of an iterator that can be implicitly converted to a connection.
  • Use std::shared_ptr<> for signal_impl reference-counting. Instead of manual reference-counting.
  • slot: Use unique_ptr<> to avoid direct call of destructor.
  • Add optional benchmark code, using boost::timer.
  • Make some single-item constructors explicit.
  • Make some member variables and methods private.
  • Remove _ and prefixes on variables and parameters.
  • Header guards: Remove leading underscores (and trailing underscores).
  • limit_derived_target<T_Target>: Rename to limit_trackable_target<> and visit_each_type<T_Type>() to visit_each_trackable() to make their purpose more obvious.

2.99.5 (unstable):

  • Functors (mem_functor, ptr_functor) no longer need to derive from a common functor_base base class, and functors no longer need to have a result_type typedef or alias.
  • emitters and accumulators no longer need t ohave a result_type typedef or alias.
  • Remove now-unnecessary adaptor_type type aliases.
  • Remove some more unused and unnecessary public type aliases.

2.99.4 (unstable):

  • Minor documentation improvements.
  • Make some constructors explicit.
  • Some more minor uses of C++11 syntax.
  • Reformat code with clang-format.

2.99.3 (unstable):

  • Correct the license of some header files from GPL to LGPL.

2.99.2 (unstable):

  • slots and signal: These should now be declared with the
      syntax, like std::function<>.
    Version 2.9/2.10 of libsigc++-2.0 supports both the old and new syntax.
  • sigc::men_fun(): Take the instance by reference only.

2.99.1 (unstable):

This is the first release of the libsigc++-3.0 API, which installs in parallel with libsigc++-2.0. The API is not significantly different, but the implementation is far simpler, using variadic templates instead of generating C++ code from .m4 files.

libsigc++-3.0 requires a compiler with C++14 support.

comment:8 by Bruce Dubbs, 3 years ago

Resolution: fixed
Status: assignedclosed

Fixed at revision 23790.

Did not need to wait for next glibmm since libsigc++-3 can be installed next to libsigc++-2.

Note: See TracTickets for help on using tickets.