Skip to content

Releases: leapmotion/autowiring

Release-0.7.6

30 Oct 17:27
Compare
Choose a tag to compare

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 to dispatch_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

05 Oct 23:52
Compare
Choose a tag to compare

Hotfix release. #767 fixes autowiring::signal::UnlinkUnsafe and guards with a unit test.

Release-0.7.4

30 Sep 22:44
Compare
Choose a tag to compare

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 the CoreRunnable base type and #748 makes CoreRunnable::m_lock mutable.
  • #745 fixes xcode compatibility, and #746 fixes a URL used by Travis.
  • #743 allows AutoConstruct and AutoRequired to be copied.
  • #749 adds a one-way observable transition flag concept and deploys it experimentally in CoreContext.

Release-0.7.3

17 Aug 16:07
Compare
Choose a tag to compare

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 for CoreContext 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 to ContextMap
  • #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

31 Jul 23:38
Compare
Choose a tag to compare

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 on typeid.
  • #694 implements an unlink-on-teardown feature in CoreContext to help prevent memory leaks due to Autowired 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 to AutoFilter
  • #676 benchmarks the ObjectPool, #678 doubles ObjectPool 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 of CoreContext::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

15 Jul 05:03
Compare
Choose a tag to compare

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 AutoFilters to accept a CoreContext& as an input argument
  • #609 adds a test for an unexpected feature: AutoFilter(MyType&, MyType&), and #623 allows this feature to be used with AutoFilter 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 deprecates AutoPacket::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 to Unsnoop
  • #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 an AutoFilter 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 of SharedPtrSlot 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

20 Jun 01:09
Compare
Choose a tag to compare

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 and CoreContext::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

13 Jun 03:02
Compare
Choose a tag to compare

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 and BasicThread::Ready, #537 elimintes auto_in::operator bool, #538 eliminates BasicThread::m_complete, #539 eliminates CoreContext::Construct, #540 eliminates CoreContext::InitiateCoreThreads, #541 eliminates CoreThread::PromoteReadyEventsUnsafe, #543 eliminates an mutable shared_ptr overload of AutoPacket::Get
  • #546 adds a thread pool concept to CoreContext, you can now add lambdas to run later with CoreContext::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

01 Jun 22:45
Compare
Choose a tag to compare

This release is another incremental bugfix and stabilization release for the auto_prev and signal features.

  • #517 removes an unneeded virtual inheritance of CoreRunnable by BasicThread. Hopefully, nobody has diamond inheritance of CoreRunnable, 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

20 May 10:49
Compare
Choose a tag to compare

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 to ContextCreator::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 an AutoPacketFactory
  • #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.