Releases: leapmotion/autowiring
Release-0.7.6
This is another bugfix/upkeep release that, again, addresses problems with signals and client-side event arrangements.
- #796 partially fixes a concurrency problem with
NotifyWhenAutowired
under teardown - #771 fixes a problem that can arise when the same type is injected from multiple threads at the same time
- #772 and #803 fixe a long-standing CMake installer inconsistencies
- #773 allows signal handlers to be mutable
- #775 removes the deprecated
AutoInjectable
type - #777 makes invocation of
CoreContext::Create
on a stopped context harmless by changing the exception type todispatch_aborted_exception
- #782 fixes an issue with
autowiring::parallel
and void dispatchers and #783 adds a barrier concept - #774, #794, #812, #813, #814, and #815 makes signal behavior, especially under concurrent modification, much more predictable
- #786 implements
SetThreadPriority
on non-Windows platforms - #780 implements a strong
NotifyWhenAutowired
sequentiality guarantee - #785, #788, #779, #778 fix miscellaneous typos and comments throughout the codebase
Release-0.7.5
Hotfix release. #767 fixes autowiring::signal::UnlinkUnsafe
and guards with a unit test.
Release-0.7.4
This is a compatibility and extension release that also removes some concepts that were not being used by any downstream clients. Most important in this release are #734, which fixes a multi-in bug, and #757, which makes signals safer to use.
- #734 adds a unit test to prove a multiple decoration input bug in Autowiring, and also corrects the problem.
- #739 brings in a high performance spin lock for low-contention use cases, and #735 makes use of this lock in
autowiring::signal
. - #756 adds a very strong sequencing guarantee to
autowiring::signal
and corrects some bad inconsistencies in its behavior. - #756 allows piecewise construction of
autowiring::tuple
, which has the effect of eliminating one move where move is supported by a tuple member and one copy where it is not. - #755 eliminates the disused AutoConfig concept. Rest in peace.
- #733 gives a name to one of the
ObjectPool
default ctor arguments so users don't have to construct one every time. - #735 makes
CoreContext
concrete.CoreContext
was abstract in v0.7.3, and this meant funny things could happen in teardown. - #741 fixes a static assertion in factory new.
- #744 enhances
AutowiringEnclosure
by actually showing the runnables that are hanging unit tests rather than just failing. - #742 pulls the
ThreadSleep
method down to theCoreRunnable
base type and #748 makesCoreRunnable::m_lock
mutable. - #745 fixes xcode compatibility, and #746 fixes a URL used by Travis.
- #743 allows
AutoConstruct
andAutoRequired
to be copied. - #749 adds a one-way observable transition flag concept and deploys it experimentally in
CoreContext
.
Release-0.7.3
This release is another bugfix and minor feature release. A handful of pull requests address major bugs that arose downstream due to incorrect handling of signal unlink on teardown; this is the largest issue addressed in this release.
Major changes:
- #717 fixes a use-after-free issue that arises when the new experimental unlink-teardown feature is used
- #727 corrects a bad type collapse implementation caused by a bad refactor
Minor changes:
- #712 allows
autowiring::dbg::WriteAutoFilterGraph
to function even when some filter types are incomplete - #709 and #728 add the
AutoCurrentPacket
concept - #708 enhances cleanup when
Autowired::reset
is called - #713 replaces the
AddTeardownListener
method with a signal forCoreContext
and adds a few more useful signals - #714 teaches
autowiring::signal
move construction and assignment - #715 implements a very simple observable concept
- #716 fixes a compatibility issue identified on Fedora 16
- #718 deprecates the
AutoRestarter
and removes corresponding tests - #724 adds a
clear
function toContextMap
- #723 and #725 add a few miscellaneous tests to untested functionality
- #730 adds the
AutoPacket::Call
method which can call a target function with its own contained arguments.
Release-0.7.2
This release is mainly focused on performance and compatibility, with the largest improvements coming from #652 which changes to how objects are stored and searched in CoreContext
and AutoPacket
.
Major changes:
- #652 is a substantial performance improvement to the behavior of
AnySharedPointer
and all but completely breaks Autowiring of its nonperformant reliance ontypeid
. - #694 implements an unlink-on-teardown feature in
CoreContext
to help prevent memory leaks due toAutowired
cycles
Minor changes:
- #653 improves the performance of lambdas pended with an empty timeout
- #655, #660, #662, and #663 allow Autowiring to be used on Windows XP again
- #657 and #702 fix some warnings due to internal uses of deprecated types, and squelches those warnings where appropriate
- #659 prevents accidental copies of
AutoPacketFactory
- #668 and #669 improves the flexibility of
ContextMap
enumeration - #673 and #677 provide a cross-platform way to declare aligned types and allocate aligned memory
- #665 allows
std::shared_ptr<AutoPacket>
to be used as an input argument toAutoFilter
- #676 benchmarks the
ObjectPool
, #678 doublesObjectPool
performance, and #684 lays the groundwork for future improvements - #666 adds a heterogenous block concept which is expected to be used in
AutoPacket
in a future release. - #690 avoids the needless use of the inefficient
std::stack
and #699 improves the performance ofCoreContext::SetCurrent
- #693 provides an enumerable collection from
autowiring::parallel
to support range-based for loops, and #696 allows this type to be used with lambdas that have no return type - #700 corrects some problems preventing Autowiring tests from being used with valgraind
- #701, #702, and #695 fix miscellaneous warnings
Release-0.7.1
This is largely a bugfix release that includes a handful of features intended to support an eventual release of a full fan-out concept.
- #606 allows
AutoFilter
s to accept aCoreContext&
as an input argument - #609 adds a test for an unexpected feature:
AutoFilter(MyType&, MyType&)
, and #623 allows this feature to be used withAutoFilter
types - #611 eliminates one more (and hopefully the last) reference to external Boost and #632 fixes the break that introduced into the Android build
- #613 deprecates
AutoInjectable
and #627 deprecatesAutoPacket::Unsatisfiable
- #615 fixes an issue that was causing
CurrentContextPusher
to leak context references - #616 adds a move ctor to
DispatchQueue
- #617 adds the ability to determine whether a particular decoration has any publishers
- #619 fixes a lot of cases where a
shared_ptr
was being passed by value (this is slow!) - #624 corrects a nasty decoration race that was caused by a lock being unnecessarily released and exposing other threads to inconsistent state
- #625 and #647 fix some typos with our documentation and #626 makes our naming conventions more consistent and #635 updates our README for the first time in a few months
- #637 fixes some race conditions that were causing spurious unit test failures and other strange behavior with context teardown
- #640 prevents an
AutoPacketFactory
from being injected into parent contexts during a call toUnsnoop
- #641 adds
CoreContext::Quiescent
to provide a way to determine when all active threads in a context have completed - #642 ensures that unit tests that use the
AutowiringEnclosure
do not leak contexts on return and #651 allows noncompliant consumers to preserve the original behavior - #643 adds a
RunCounter
type to make the outstanding count concept more concrete - #634 switches our build process to use the Travis container and #644 upgrades our Travis setup to work on Mac
- #649 adds
AutoPacket::Emplace
- #648 allows
auto_out
to be copied or moved before anAutoFilter
returns, which allows decorative responsibility to be moved or shared. - #646 adds a compliance test for
std::shared_ptr<void>
, in preparation for a deprecation ofSharedPtrSlot
next release.
And finally, this release will be the last one to which @gtremper makes a contribution to as an employee of Leap Motion (though this has not stopped him from merging #644 and #633 since his departure!). His final pull request is:
- #620 adds a scatter/gather concept to Autowiring. This is a cornerstone feature for the implementation of a fan-out concept.
Release-0.7.0
This release introduces a final round of deprecations in this new version release, as well as introducing some brand new diagnostic features.
- #597 adds some better tutorials for AutoFilter
- #596 removes
CoreContext::Snoop
andCoreContext::Unsnoop
- #585 adds
BasicThread::IsMainThread
- #594 and #592 add a feature designed to make it easier to debug filter graphs. You can now dump graph topologies to a DOT file and then render them to an svg with graphviz
- #588 and #581 allow you to display the context topology
- #575 adds some simple methods that let you diagnose AutoFilter issues
- #593 adds the
basic_timer
function for timer purposes - #584 clears thread pool limits on the thread pools introduced in v0.6.0
- #579 allows multi-in filters to declare shared pointer inputs
- #577 prevents the global context from being restored as the current context in cases where no context was previously current
- #576 eliminates the
ContextCreator
type (finally!) - #572 adds
AutoPacketFactory::CurrentPacket
Release-0.6.0
This release deprecates a number of features that were unused or badly used downstream. As such, it is a compatibility-breaking update. It also adds a new feature: CoreContext
-mediated thread pools!
- #526 fixes another reentrancy case when dispatcher dtors do funny things
- #530 removes the deprecated
NewAutoFilter
type - #529 fixes an accidentally redefined
std::make_unique
- #534 eliminates peer contexts
- #535 eliminates
CoreThread::Ready
andBasicThread::Ready
, #537 elimintesauto_in::operator bool
, #538 eliminatesBasicThread::m_complete
, #539 eliminatesCoreContext::Construct
, #540 eliminatesCoreContext::InitiateCoreThreads
, #541 eliminatesCoreThread::PromoteReadyEventsUnsafe
, #543 eliminates an mutableshared_ptr
overload ofAutoPacket::Get
- #546 adds a thread pool concept to
CoreContext
, you can now add lambdas to run later withCoreContext::operator+=
- #559 corrects a possible memory smasher with
AutoPacket::GetAll
- #552 forbids attaching pointers as AutoFilter arguments--this is dangerous, and nobody seemed to be using it anyway
- #560 fixes an issue arising when multi-decorate arguments are provided by unreachable AutoFilters
Release-0.5.4
This release is another incremental bugfix and stabilization release for the auto_prev
and signal
features.
- #517 removes an unneeded virtual inheritance of
CoreRunnable
byBasicThread
. Hopefully, nobody has diamond inheritance ofCoreRunnable
, because this would create problems anyway. - #519 speeds up build times of Autowiring on platforms that support precompiled headers
- #522 corrects a nasty reentrancy occuring when dispatcher destructors attempt to access the dispatch queue to which they were pended
- #523 corrects an issue with
auto_prev
during concurrent use - #524 makes
autowiring::signal
a lot more useful by de-templating some of the return types and fixing some bugs in its implementation, and #516 makes sure everything works fine with virtual inheritance
Release-0.5.3
Another bugfix release. A few minor enhancements on existing features, some stronger guarantees are now made by this release, and a minor reentrancy deadlock occuring in the deprecated ContextCreator
type has been addressed. Users of Autowiring beware: ContextCreator
will be removed in the next major version update of Autowiring, use ContextMap
instead.
The biggest introduction is the AutoBench project, which allows users to evaluate relative performance of a variety of common Autowiring use cases.
- #498 makes junction box errors easier to follow
- #501 fixes an issue with the empty case for
ContextEnumeratorT::unique
- #503 ensures that reference AutoFilter outputs are constructed correctly with their allocators, where they are defined
- #505 fixes a really nasty reentrancy teardown in
ContextCreator
that arises when a context expires during the call toContextCreator::Clear
- #507 strengthens the guarantees offered by the timed version of
DispatchQueue::Barrier
. - #510 adds the AutoBench project
- #513 fixes a nasty
AnySharedPointer
bug that arises when the same lambda is attached multiple times to anAutoPacketFactory
- #511 lowers the overhead of
DispatchQueue
by about 20% - #515 fixes yet another Android build regression--this time, only the unit tests had problems building.