Skip to content

Releases: membraneframework/membrane_core

v1.2.1

Choose a tag to compare

@FelonEkonom FelonEkonom released this 14 Mar 14:44
eb87a30

What's Changed

Full Changelog: v1.2.0...v1.2.1

v1.2.0

Choose a tag to compare

@FelonEkonom FelonEkonom released this 28 Feb 13:27
3929a16

membrane_core v1.2.0 has just been released on hex.pm! It introduces, among other things, new :telemetry events emitted on every callback execution in the framework (link to docs). This aims to simplify debugging Membrane Components as well as allow writing custom plugs that can be attached to Membrane projects to generate, e.g., traces or structured logs.

Beyond this, the new release introduces:

  • built-in helper elements: Membrane.Connector, Membrane.Tee and Membrane.Funnel
  • new compile-time and runtime checks which help detect common pipeline architectural problems, especially related to flow control
  • :max_instances pad option (more info in Pad docs)

All changes

New Contributors

Full Changelog: v1.1.2...v1.2.0

v1.2.0-rc0

Choose a tag to compare

@FelonEkonom FelonEkonom released this 06 Feb 13:43
4367eef

What's Changed

  • Add :max_instances option for dynamic pads. #876
  • Implement Membrane.Connector. #904
  • Implement diamonds detection. #909
  • Incorporate Membrane.Funnel, Membrane.Tee and Membrane.Fake.Sink. #922
  • Added new, revised Telemetry system #905

New Contributors

Full Changelog: v1.1.2...v1.2.0-rc0

v1.1.2

Choose a tag to compare

@FelonEkonom FelonEkonom released this 18 Oct 13:49
0f3e838

New features

Bugfixes

  • Remove failed to insert a metric stalker warning by @mat-hek in #849

Docs updgrade

  • add newlines so tables are rendered correctly, update packages list by @mat-hek in #853
  • Fix table rendering for raw audio and video by @harrisi in #852

Rest of changes

New Contributors

Full Changelog: v1.1.1...v1.1.2

v1.1.1

Choose a tag to compare

@FelonEkonom FelonEkonom released this 24 Jul 15:45
3caf044

Bugfixes

  • Fix 'table identifier does not refer to an existing ETS table' error when inserting metrics into the observability ETS by @mat-hek in #835
  • DistributedAtomic.Worker implements sub_get as a call by @philipgiuliani in #837

Other pull requests

New Contributors

Full Changelog: v1.1.0...v1.1.1

v1.1.0

Choose a tag to compare

@FelonEkonom FelonEkonom released this 27 Jun 12:47
5f53b95

Biggest changes

  • Introduction of new callbacks in Bins and Pipelines: handle_child_setup_completed/3 and handle_child_playing/3
  • Improvements of :auto flow control mechanism, including queueing items, when processing them is not demanded in the specific moment

All changes

New Contributors

Full Changelog: v1.0.1...v1.1.0

v1.1.0-rc1

Choose a tag to compare

@FelonEkonom FelonEkonom released this 05 Jun 10:36
14d8018

What's Changed

New Contributors

Full Changelog: v1.1.0-rc0...v1.1.0-rc1

v1.1.0-rc0

Choose a tag to compare

@FelonEkonom FelonEkonom released this 08 Apr 12:10
fb10564

This release contains:

  • Upgrade in flow control mechanism - queuing buffers, when demand is low in flow_control: :auto.
  • Few bug fixes.
  • Deprecation of handle_spec_started/3 callback and Membrane.Testing.Pipeline.message_child/3 in favor of Membrane.Testing.Pipeline.notify_child/3.
  • Bump dependency to Ratio to ~> 3.0 or ~> 4.0.
  • Docs upgrade.

All changes

New Contributors

Full Changelog: v1.0.1...v1.1.0-rc0

v1.0.1

Choose a tag to compare

@FelonEkonom FelonEkonom released this 22 Feb 14:59
2eacd1a

This release contains some bug fixes and small improvements. The most important are:

  • Fix for a bug in the timer that made it tick two times too slow sometimes (non-deterministically). Fixed in #685.
  • There's a new field crash_reason in Pipeline's and Bin's callback context that can be used in the handle_crash_group_down callback, added in #720.
  • Unrecognized messages now trigger a warning if a component doesn't have the handle_info callback implemented, just like in GenServer. See #680.

All changes

New Contributors

Full Changelog: v1.0.0...v1.0.1

v1.0.0

Choose a tag to compare

@FelonEkonom FelonEkonom released this 16 Oct 14:52
506a41e

Finally, we have released v1.0.0 of Membrane Core! 🎉🎉🎉 Comparing to v0.12.9, this releases contains many changes in API and framework private modules. We wrote a migration guide helping you adjust your code to Membrane Core v1.0.0. Let's take a look, at what changes are introduced with this release:

Improvements and optimizations in the demands mechanism

Release v1.0.0 contains a lot of changes in Membrane private modules responsible for managing the backpressure mechanism. The two biggest changes are:

  • Implementation of :push effective flow control in elements containing pads with flow_control: :auto - it allows avoiding work related to the calculation of the value of auto-demand in input pads with flow_contro: :auto, when a pipeline topology allows us to skip it without damage of backpressure mechanism. This change also fixes the problem with toilet overflow error occurring far from the element, which works too slowly.
  • Passing the value of demand using :atomics, instead of message passing - this change is a big performance and memory optimisation and allowed us to make auto-demands more precise in the amount of demanded data.

Support for kino_membrane

This release brings compatibility with kino_membrane, the tool for visualization and introspection of Membrane pipelines in Livebook.

Sending end of stream, even if there was no start of stream before

Since now, we can send end of stream on pads, even if we haven't sent start of stream there yet. Moreover, before unlinking an input pad, every element will always execute handle_end_of_stream for this pad, no matter, if it received start of stream earlier, or not. This will happen before calling handle_pad_removed/3 in the case of dynamic pads and on entering terminating state, in the case of static pads.

Removing handle_process_list/4 and handle_write_list/4 callbacks

Since v1.0.0, you have to handle every single buffer separately in handle_buffer/4 callback, instead of handling whole list of buffers in this in handle_process_list/4 or handle_write_list/4.

API improvements

  • handle_process and handle_write are replaced with handle_buffer for better consistency
  • :mode and :demand_mode options in pad definition are replaced with :flow_control, which may be :push, :auto or :manual and defaults to :auto whenever available.
  • Callback contexts are now maps instead of structs and they're documented in a single module per component, so it's more straightforward to figure out what they contain

All changes

Breaking changes

Non-breaking changes

Bug fixes

Full Changelog: v0.12.9...v1.0.0