Releases: membraneframework/membrane_core
Release list
v1.0.0-rc1
Here comes the second release candidate for Membrane Core 1.0.0! Compared to v1.0.0-rc0, this release does not contain a lot of changes in API, but it introduces many bug fixes, improvements and optimizations in the Membrane private modules. We wrote a migration guide, helping you in adjusting your code to this version of membrane_core. But now, let's take a look at the summary, of what changes we have just introduced:
Improvements and optimizations in the demands mechanism
Release v1.0.0-rc1 contains a lot of changes in Membrane private modules responsible for managing the backpressure mechanism. The two biggest changes are:
- Implementation of
:pusheffective flow control in elements containing pads withflow_control: :auto- it allows avoiding work related to the calculation of the value of auto-demand in input pads withflow_contro: :auto, when a pipeline topology allows us to skip it without damage of backpressure mechanism. This change also fixes the problem withtoilet overflowerror occurring far from the element, which works too slowly. - Passing the value of
demandusing: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 c:Membrane.Element.WithInputPads.handle_buffers_batch/4
This release reverts support for this callback, so if you have used it, you have to rewrite your element to use c:Membrane.Element.WithInputPads.handle_buffer/4 instead.
Crash groups in bins
Until now, it was possible, to create a crash group only from the level of pipelines. v1.0.0-rc1 introduces support for doing it also from bins!
All changes
Breaking changes
- Update Membrane.Pipeline.terminate/2 behavior by @FelonEkonom in #519
- Remove assert_pipeline_play by @FelonEkonom in #528
- Update supervisor exit reason by @FelonEkonom in #567
- Send end of stream, even if there was no start of stream before by @FelonEkonom in #577
- Remove default implementation of start, start_link and terminate functions from Membrane.Pipeline by @FelonEkonom in #598
- Delete handle_buffers_batch callback by @FelonEkonom in #601
Non-breaking changes
- Crash groups in bins by @FelonEkonom in #521
- Allow passing a list of buffers to the testing source by @varsill in #539
- Implement Debug.Filter and Debug.Sink by @FelonEkonom in #552
- Establish links in the order from the spec by @FelonEkonom in #558
- Raise on attempting to remove a not existing child by @FelonEkonom in #553
- Implement
:pause_auto_demandand:resume_auto_demandactions by @FelonEkonom in #586 - Dashboard by @mat-hek in #571
- Autodemands in sinks and endpoints by @FelonEkonom in #512
- Add performance test by @varsill in #515
- Improve performance test by @varsill in #540
- Filter out the branches from forks from the performance test by @varsill in #548
- Do not launch performance test after merge to master by @varsill in #550
- Move parts of @moduledoc from Membrane.Element.Base to Membrane.Element by @djanda97 in #547
- Remove redundant check if static pads are linked by @FelonEkonom in #557
- Auto push full impl by @FelonEkonom in #537
- Add docs about default callback implementation by @Rados13 in #572
- Add typedocs for @type t types by @varsill in #551
- make most tests run async by @mat-hek in #576
- Improve
in_progress_memorymetric in performance benchmark by @varsill in #579 - Update actions docs by @FelonEkonom in #580
- Refactor child pad removed default error message by @FelonEkonom in #581
- Fix tests failing on Elixir 1.14 by @FelonEkonom in #516
- Bugfix pipeline call by @varsill in #527
- Update processed specs, when children or link is down by @FelonEkonom in #517
- Validate Testing.Pipeline options by @FelonEkonom in #593
- New readme by @mat-hek in #597
Bug fixes
- Fix pipeline's call function spec by @Qizot in #532
- Enable :unmatched_returns in dialyzer by @bblaszkow06 in #534
- Update link to coding style guide by @djanda97 in #546
- Fix the bug with pipeline persisting in Zombie mode after self-terminating with
terminate: :normalaction by @varsill in #538 - Benchmark tags display bugfix by @varsill in #544
- Fix bug when bin removes its pad by @FelonEkonom in #554
- Fix bug in Supervisors when pipeline is distributed by @FelonEkonom in #556
- Stop calling handle_demand after end of stream by @FelonEkonom in #568
- fix compatibility with elixir 1.15 by @mat-hek in #570
- Fix compilation error occurring on Elixir 1.15 by @FelonEkonom in #573
- Fix process.info in metrics by @mat-hek in #582
- Add pid_string to stalker config by @FelonEkonom in #584
- Fix specs for default pipeline functions by @FelonEkonom in #585
- Fix stream format error message, fix race condition in handling child pad removed by @FelonEkonom in #591
- Fix test failing on elixir 1.15 by @FelonEkonom in #592
- Spawn Membrane.Clock via subprocess supervisor in components by @FelonEkonom in #594
- Fix flaky tests on Elixir 1.15 by @FelonEkonom in #595
- Fix empty pad options bug by @FelonEkonom in #599
New Contributors
Full Changelog: v1.0.0-rc0...v1.0.0-rc1
v0.12.9
What's Changed
- Add
:pause_auto_demandand:resume_auto_demandactions. #586 - Fix process leak in starting clocks. #594
- Add child exit reason to the supervisor exit reason. #595
Full Changelog: v0.12.8...v0.12.9
v0.12.8
What's Changed
- Move metrics ets creation to stalker by @mat-hek in #589
- Refactor code related to crash groups and linking mechanism by @FelonEkonom in #574
- Fix specs for default pipeline functions by @FelonEkonom in #585
- Fix stream format error message, fix race condition in handling child pad removed by @FelonEkonom in #591
Full Changelog: v0.12.7...v0.12.8
v0.12.7
What's Changed
- make most tests run async by @mat-hek in #576
- Improve
in_progress_memorymetric in performance benchmark by @varsill in #579 - Update actions docs by @FelonEkonom in #580
- fix process.info in metrics by @mat-hek in #582
- Add pid_string to stalker config by @FelonEkonom in #584
- Refactor child pad removed default error message by @FelonEkonom in #581
Full Changelog: v0.12.6...v0.12.7
v0.12.6
Changes:
- Implement functionalities needed for integration with
membrane_kino_dashboard. #571
Full Changelog: v0.12.5...v0.12.6
v0.12.5
v0.12.4
What's Changed
Full Changelog: v0.12.3...v0.12.4
v0.11.5
What's changed
- Fix compilation error occuring with Elixir 1.15. #570
Full Changelog: v0.11.4...v0.11.5
v0.12.3
What's Changed
- Fix bug in fields naming in callback contexts. #569
- Update exit reasons of Membrane Components and their supervisors. #567
Full Changelog: v0.12.2...v0.12.3
v0.12.2
What's Changed
- Fix bug in order of handling actions returned from callbacks.
Full Changelog: v0.12.1...v0.12.2