View Source Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
majic 1.2.0 - 2026-05-13
Added
- Forked gen_magic.
- Pool:
Majic.Pool, using nimble_pool. - Plug:
Majic.Plug. - Unified API:
Majic.perform/1,2,3. - Builds an up-to-date and patched magic database.
Majic.Server.reload/2,3Majic.Server.recycle/2,3- Woodpecker CI pipeline
Changed
- Improved C port, now using erl_interface
- Builds on Musl and macOS (Homebrew)
- Better error and timeout handling
- Bytes support:
Majic.Server.perform(ref, {:bytes, <<>>}) - Renamed
priv/apprenticetopriv/libmagic_portto be more obvious inps - Renamed
Majic.Helpers.perform_oncetoMajic.Once.perform
Fixed
- Use pkg-config to discover libmagic paths (fixes macOS Homebrew build)
- Remove
ei_init()call that crashes on macOS with unlimited fd limit - Redirect C port stderr to /dev/null unless MAJIC_DEBUG is set
Once.perform/3now cleans up server process on errorPool.terminate_worker/3now stops server processesExtension.fix/3preserves directory paths in outputExtension.fix/3handles uppercase extensions correctlyExtension.fix/3no longer produces trailing dot with no candidatesMajic.Plugrewritten with recursive transform for nested uploadsMajic.Plugno longer raises on majic errors, falls back to original uploadMajic.perform/2withonce: truenow passes:timeoutoptionMajic.Serverpostpones reload/recycle calls in non-available statesMajic.Serverhandles late port data in recycling state- Fix
:eaccesstypo to:eaccesin errno map - Guard
terminate/3against nil port
majic [1.1.1]
- Fixed build artifact mistakenly included in the Hex.pm package
majic [1.1.0]
- Updated dependencies
-Werrorremoved fromMakefileMajic.Extension.fix/3will append an extension when requested if none exist
majic [1.0.0]
gen_majic [1.0]
Added
- Added support for process recycling (evadne).
- Added documentation (evadne).
Changed
Replaced GenServer with
:gen_statem(evadne).- Changed API; added support for customisation.
Refined tests and other aspects of the library (evadne).
0.20.83
Added
- Soak testing script (devstopfix)
Changed
- Replaced Erlexec usage with Port (devstopfix)
0.0.1
Added
- Initial Elixir wrapper with Erlexec (evadne)
- Intiial C program (evadne)