Skip to content

Latest commit

 

History

History
746 lines (712 loc) · 32.8 KB

CHANGELOG.md

File metadata and controls

746 lines (712 loc) · 32.8 KB
  • v0.10.0 - 06/09/2021

    • Application changes
      • Add built-in applications with rx_raw, rx_wbfm, rx_nbfm, rx_am, rx_ssb, rx_rds, rx_ax25, rx_pocsag, rx_ert, and iq_converter.
    • Block changes
      • Refactor to use PipeMux in ThrottleBlock and HackRFSink.
      • Add support for v3 API (libsdrplay_api) to SDRplaySource.
      • Refactor title option into options table and add timestamp option for PrintSink.
      • Implement tostring() for AX25FrameType, POCSAGMessageType, and RDSPacketType types.
      • Fix spurious warning about block terminated on shutdown for AirspySource.
      • Fix missing error check for set gain mode and fix typo in set gain error message in BladeRFSource.
      • Default to autogain if no manual gain specified in RtlSdrSource and UHDSource.
    • Composite changes
      • Add RDSDecoderBlock to flow graph of RDSReceiver.
    • Runner changes
      • Add built-in application support.
    • Core changes
      • Add optional count argument to read() in PipeMux.
      • Add new helper functions parse_args(), format_options(), array_concat(), array_map(), table_extend(), table_keys(), and table_values().
      • Add built-in application framework.
    • Documentation changes
      • Fix minor typos in a few docstrings.
      • Add PipeMux and ControlSocket description to Architecture document.
      • Add Applications document.
  • v0.9.1 - 01/08/2021

    • Block changes
      • Fix spurious warning about downstream block termination on shutdown in RtlSdrSource.
    • Core changes
      • Fix flow graph shutdown handling on Mac OS X due to missing sigtimedwait().
  • v0.9.0 - 01/04/2021

    • Block additions
      • PulseMatchedFilterBlock
      • PulseAmplitudeModulatorBlock
      • QuadratureAmplitudeModulatorBlock
      • BladeRFSource
      • BladeRFSink
    • Block changes
      • Fix support for Lua file handles with PrintSink and BenchmarkSink.
      • Add support for optional reporting title to PrintSink and BenchmarkSink.
    • Core changes
      • Refactor read and write multiplexing of Pipes into the PipeMux class.
      • Add control sockets to blocks to implement graceful shutdown and to support an asynchronous control interface in the future.
      • Reimplement flow graph stop with control sockets for faster and more graceful shutdown.
      • Add automatic termination of unresponsive block processes to flow graph stop.
      • Fix blocking in flow graph wait when flow graph has already terminated or when running multiple flow graphs.
    • Documentation changes
      • Add BladeRF and PortAudio to Supported Hardware document.
    • Website changes
      • Improve reference manual layout and navigation.
      • Improve sidebar position and layout.
  • v0.8.0 - 10/22/2020

    • Block additions
      • FrequencyModulatorBlock
      • ManchesterMatchedFilterBlock
      • PreambleSamplerBlock
      • IDMFramerBlock
      • SCMFramerBlock
      • SCMPlusFramerBlock
    • Composite additions
      • ERTReceiver
    • Block changes
      • Add file locking to JSONSink to support interleaved writes to the same file from multiple instances of the sink.
      • Add alternative library name candidates to PortAudioSource, PortAudioSink, PulseAudioSource, PulseAudioSink for better user experience on Debian-based platforms.
    • Type changes
      • Add tobytes() helper function to the Bit type to convert a Bit vector to bytes.
      • Add tostring() helper function to the Bit type to format a Bit vector as a string.
    • Core changes
      • Add support for trying multiple shared library name candidates in FFI library loads.
      • Add alternative library name candidates for liquid-dsp, VOLK, and FFTW3 for better user experience on Debian-based platforms.
      • Add support for copying the input data type to the output in block type signatures with the "copy" sentinel.
      • Enforce explicit block connections are specified with the output port first and the input port second.
      • Refactor hierarchical block functionality of CompositeBlock.
        • Add support for type signature differentiation of hierarchical blocks.
        • Add support for the initialize() hook for hierarchical blocks, allowing additional initialization based on the sample rates and differentiated type signatures of internal blocks.
        • Improve type validation of aliased ports in hierarchical blocks.
      • Improve the string representation of block objects during various connectivity stages (unconnected, differentiated, connected).
    • Build changes
      • Add Lua module installation target to Makefile.
    • Documentation changes
      • Update CompositeBlock internals with hierarchical block functionality refactoring in architecture document.
      • Add Lua module installation option to installation guide.
      • Add note about LuaJIT 2.1.0-beta3 embedded bytecode loading bug to installation guide.
      • Improve description of shared library in embedding guide.
    • Website changes
      • Improve formatting of headers and the sidebar.
    • Contributors
      • Jonas Rudloff (@kokjo) - eb5bc68, 4a16f57, 36ce479
      • Paul Harrington (@phrrngtn) - for discussion, many IQ samples, and testing of the ERTReceiver composite.
  • v0.7.0 - 04/29/2020

    • Block additions
      • PortAudioSource
      • AirspyHFSource
    • Block changes
      • Add option for direct sampling mode to RtlSdrSource.
      • Fix feedback loop causing diminishing throughput in ThrottleBlock.
      • Use FFTW_ESTIMATE in fftw DFT/IDFT initialization to reduce startup time on certain platforms (e.g. Raspberry Pi 3) when using FFT accelerated FIRFilterBlock.
    • Core changes
      • Improve string representation for core C structure types.
      • Add type_name property to core types, CStructType factory, and ObjectType factory for use in error and debug reporting.
      • Disable call operator for constructed block instances.
      • Fix method registration with methods table argument in ObjectType factory function.
      • Enforce linear connections between blocks have exactly one output and input port.
      • Improve error reporting in type signature differentiation with port names and types.
      • Improve flow graph debug reporting with sample rates and data types.
      • Add optional count argument to Pipe read().
    • Documentation changes
      • Add macOS MacPorts package to installation guide and README.
      • Improve dependency installation instructions in installation guide and README.
      • Add support for @property docstring in reference manual.
      • Add mailing list link (https://groups.io/g/luaradio) to README and website.
      • Add Airspy HF+ Dual Port and Discovery to Supported Hardware document.
  • v0.6.1 - 03/07/2020

    • Block changes
      • Fix gnuplot check under lua52compat LuaJIT for gnuplot plotting sinks.
      • Update C API (v0.8) to fix block crash for SoapySDRSource and SoapySDRSink.
      • Add library and ABI version reporting to debug dump for SoapySDRSource and SoapySDRSink.
      • Migrate to new callback based API (v2.13) for SDRplaySource.
      • Update C API (v3.15.0.0) for UHDSource and UHDSink.
      • Add library and ABI version reporting to debug dump for UHDSource and UHDSink.
      • Clean up manual gain warnings under autogain setup for UHDSource.
      • Add device reporting to debug dump for RtlSdrSource.
      • Make FFI cdefs more consistent with public APIs for HackRFSink, HackRFSource, UHDSource, UHDSink, and AirspySource.
    • Build changes
      • Improve LuaJIT library and executable discovery in Makefile.
    • Documentation changes
      • Fix examples in docstrings for several gnuplot plotting sinks.
      • Update and simplify instructions in installation guide.
      • Add macOS Homebrew package to installation guide.
    • Website changes
      • Update hardware and software suggestions in New to SDR guide.
    • Contributors
      • Jakob L. Kreuze (@TsarFox) - 1dc9f7e
  • v0.6.0 - 12/12/2019

    • Block additions
      • JSONSource
      • NetworkClientSource
      • NetworkServerSource
      • NetworkClientSink
      • NetworkServerSink
    • Block changes
      • Add format_utils with binary sample format conversion tables.
      • Add network_utils with network server and client utility classes.
      • Refactor several file sources and sinks to use format_utils: IQFileSource, RealFileSource, WAVFileSource, IQFileSink, RealFileSink, WAVFileSink.
      • Move common shared utilities to radio/utilities/ folder.
      • Improve memory copies in several blocks: DelayBlock, FIRFilterBlock, HilbertTransformBlock, ThrottleBlock, GnuplotSpectrumSink, GnuplotWaterfallSink, AX25FramerBlock, POCSAGFramerBlock, RDSFramerBlock.
      • Remove stdout debug prints from PulseAudioSource.
      • Fix partial reads in RawFileSource.
      • Fix error lookups in UHDSource and UHDSink.
    • Core changes
      • Factor common FFI cdefs out of blocks and into platform module.
      • Improve memory copies and clears in vector module.
      • Default construct elements on ObjectVector instantiation in vector module.
      • Remove radio.core.util export from top namespace.
      • Add radio.core.vector export to top namespace.
      • Fix namespacing of callback function in async module.
      • Add library version lookups to platform module.
    • Runner changes
      • Add library versions to platform dump.
    • Test changes
      • Fix Python test code generators for DecimatorBlock and top level test with scipy.signal.decimate() API change.
      • Rename code generated tests with .gen.lua suffix.
      • Simplify unit test file structure by moving Python test code generators from tests/generator/ folder to alongside generated tests.
      • Add .busted configuration to simplify unit testing invocation.
      • Add temporarily increased epsilon conditioned on liquid-dsp acceleration for FrequencyTranslatorBlock and TunerBlock tests to accommodate NCO changes in library.
    • Benchmark changes
      • Add library versions to platform reporting in LuaRadio benchmark results.
    • Documentation changes
      • Fix formatting of argument types in reference manual.
      • Add README to embed/ folder.
      • Add busted install instructions to project README and tests README.
      • Simplify busted invocation in project README, tests README, and Creating Blocks document.
      • Add REPL install instructions and FFI development tips to Creating Blocks document.
      • Update links in Creating Blocks, Comparison to GNU Radio, and Supported Hardware documents.
    • Thirdparty changes
      • Bump lua-MessagePack version to 0.5.2.
      • Bump json.lua version to 0.1.2.
    • Website changes
      • Merge luaradio.io website subproject into website/ folder.
      • Update luaradio.io website URL with https.
  • v0.5.1 - 09/03/2018

    • Block changes
      • Fix symbol issue with libSoapySDR library load on Mac OS X in SoapySDRSource and SoapySDRSink.
      • Add biastee and bandwidth options to RtlSdrSource.
    • Documentation changes
      • Fix minor typos in a few docstrings.
      • Fix source in flow graph for benchmark example.
      • Rewrite reference manual generator in Python.
      • Update docstrings for new reference manual generator.
    • Contributors
      • Ralf Biedert (@ralfbiedert) - 49d66027
      • Ralf Biedert (@ralfbiedert) - 824057ba
      • Phil (@philharrisathome) - 68d6a838
  • v0.5.0 - 11/21/2016

    • Block additions
      • UHDSource
      • UHDSink
      • NopSink
      • NopBlock
    • Block changes
      • Fix ThrottleBlock implementation with adaptive delay.
      • Fix error reporting during initialization in PulseAudioSource and PulseAudioSink.
      • Fix settings table argument in SoapySDRSource and SoapySDRSink.
      • Rename NullSource to ZeroSource.
    • Core changes
      • Add time_us() helper to platform module.
    • Documentation changes
      • Fix minor typos in a few docstrings.
      • Improve wording in several documents.
      • Update supported hardware document with USRP support.
    • Contributors
      • Daniel Von Fange - 22932b1
  • v0.4.0 - 08/31/2016

    • Block additions
      • HackRFSink
      • SoapySDRSource
      • SoapySDRSink
      • PulseAudioSource
      • InterleaveBlock
      • DeinterleaveBlock
    • Block changes
      • Fix I/Q sample conversion in HackRFSource.
      • Add FFT overlap-save implementation to FIRFilterBlock.
      • Improve performance of real to complex DFT in spectrum_utils.
      • Refactor PSD into separate class in spectrum_utils.
      • Add IDFT to spectrum_utils.
      • Add error handling for process pipe writes in gnuplot plotting sinks.
      • Fix default window type and columns values in GnuplotWaterfallSink.
    • Benchmark changes
      • Add FFT-based FIR filters to benchmarks.
      • Adjust filter tap lengths in benchmarks.
    • Core changes
      • Improve error handling and traceback when a downstream block crashes.
    • Documentation changes
      • Fix minor typos in a few docstrings.
      • Update supported hardware document.
  • v0.3.0 - 07/28/2016

    • Block additions
      • AGCBlock
      • PowerSquelchBlock
      • VaricodeDecoderBlock
    • Composite additions
      • BPSK31Receiver
    • C API changes
      • Add stack traceback to error messages.
    • Documentation changes
      • Add Ubuntu install instructions to installation guide.
      • Fix minor typos and wording in a few documents and docstrings.
    • Example changes
      • Replace constant gain with automatic gain control in rtlsdr_am_envelope, rtlsdr_am_synchronous, and rtlsdr_ssb examples.
  • v0.2.0 - 07/16/2016

    • Block additions
      • AirspySource
      • HackRFSource
      • SDRplaySource
    • Block changes
      • Add proper device close to RtlSdrSource.
    • Core changes
      • Add asynchronous callback wrapper to support callbacks from threads and signal handlers.
    • Documentation changes
      • Add Supported Hardware document.
      • Add Homebrew install instructons to installation guide.
    • Contributors
      • Martin Müller - 354cd5e0
      • Dominic Spill - 26bcbf72
      • Special thanks to @zeryl, @rxseger, @dominicgs for testing and fixing the HackRF source block.
  • v0.1.2 - 07/09/2016

    • C API changes
      • Use /usr/local as default prefix for installation in Makefile.
      • Extract version numbers from radio package rather than git tag in Makefile.
    • Examples changes
      • Remove setup-specific RtlSdrSource frequency correction settings from examples, which were accidentally committed.
    • Documentation changes
      • Fix type signatures example figure.
      • Fix minor typos and wording in a few documents and docstrings.
      • Qualify a few points in the Comparison to GNU Radio document.
      • Add prerequisites and dependencies to installation guide.
      • Add contributing document.
    • Contributors
      • Kevin Mehall - 8a859261
  • v0.1.1 - 07/03/2016

    • Block changes
      • Add device index option to RtlSdrSource.
      • Choose default RF gain from dongle supported gains in RtlSdrSource.
    • C API changes
      • Look up lua C module install path instead of presuming it in Makefile.
    • Example changes
      • Fix tuner filter bandwidth in rtlsdr_rds.
    • Documentation changes
      • Make types bold in type signatures example figure.
      • Improve wording in Comparison to GNU Radio document.
  • v0.1.0 - 07/02/2016

    • Initial release.
  • (Prototype) v0.0.20 - 07/01/2016

    • Block additions
      • ManchesterDecoderBlock
    • Block changes
      • Re-order initialization in RtlSdrSource to fix "PLL not locked" warning.
      • Move type conversion blocks from Miscellaneous to their own category in their block docstrings.
    • Composite changes
      • Improve bit sampling and decoding, and simplify to non-coherent BPSK demodulation in RDSReceiver.
    • C API changes
      • Add install target to Makefile.
      • Add version number fallbacks to Makefile for building out of git tree.
      • Fix shared library build on Mac OS X.
      • Improve portability of rds-timesync example to support Mac OS X.
      • Rename fmradio example to fm-radio for consistency.
    • Runner changes
      • Add support for running scripts from standard in.
    • Documentation changes
      • Resize all figures to under 800px.
      • Simplify instructions in installation guide.
      • Improve wording in all documents.
      • Improve formatting and wording in several docstrings.
      • Improve formatting of reference manual.
    • Benchmark changes
      • Bump number of trials from 3 to 5.
      • Add standard deviation computation.
      • Shorten benchmark names.
    • Example changes
      • Improve bit sampling and decoding, and simplify to non-coherent BPSK demodulation in rtlsdr_rds.
      • Improve plot range of RF spectrum in rtlsdr_ssb.
      • Improve variable names in several examples.
      • Rearrange code and add section comments for clarity in all examples.
  • (Prototype) v0.0.19 - 06/04/2016

    • Documentation changes
      • Add packaged third-party modules licenses to LICENSE file.
      • Add docstrings throughout codebase and blocks.
      • Add reference manual generator.
      • Add documents:
        • Reference Manual
        • Installation
        • Creating Blocks
        • Embedding LuaRadio
        • Architecture
        • Comparison to GNU Radio
      • Add tests README.
      • Add examples README.
      • Add project README.
  • (Prototype) v0.0.18 - 06/04/2016

    • Block additions
      • RealToComplexBlock
      • AddConstantBlock
      • SinglepoleLowpassFilterBlock
      • SinglepoleHighpassFilterBlock
      • FMPreemphasisFilterBlock
    • Block changes
      • Add return codes to error messages in RtlSdrSource.
      • Improve performance of RtlSdrSource by using rtlsdr_read_async().
      • Change gain argument to modulation index in FrequencyDiscriminatorBlock.
      • Add filename and file object support to BenchmarkSink.
      • Add periodic human-readable reporting to BenchmarkSink.
      • Refactor FMDeemphasisFilterBlock to use SinglepoleLowpassFilterBlock.
      • Rearrange optional nyquist frequency argument order in filter blocks.
      • Fix overflow for sample values of 1.0 in WAVFileSink.
      • Add sampling interval to BinaryPhaseCorrectorBlock to reduce computation.
      • Use line style 1 for plotting in GnuplotPlotSink, GnuplotXYPlotSink, GnuplotSpectrumSink.
      • Add argument assertions to all blocks.
      • Refactor all blocks to use persistent output sample vectors.
    • Composite changes
      • Remove constant audio gain block from AMEnvelopeDemodulator, AMSynchronousDemodulator, and SSBDemodulator.
      • Add DC rejection filter for carrier to AMEnvelopeDemodulator and AMSynchronousDemodulator.
      • Add argument assertions to all composites.
    • Example changes
      • Add iqfile_converter example.
      • Add DC rejection filter for carrier to rtlsdr_am_envelope and rtlsdr_am_synchronous.
      • Remove autogain setting from RTL-SDR source in rtlsdr_wbfm_mono, rtlsdr_wbfm_stereo, rtlsdr_rds examples.
      • Make tune offsets consistent across examples.
      • Make plot ranges consistent across examples.
      • Add headless running support to all examples.
  • (Prototype) v0.0.17 - 06/03/2016

    • Core changes
      • Fix deadlock in synchronous read of multiple pipes, when a slower input pipe has an indirect dependency on a faster input pipe because it shares a common upstream writer.
      • Enforce all block input rates match before running in CompositeBlock.
      • Enforce inputs/outputs names match previous type signatures in Block.
      • Close unneeded file descriptors in block process after forking in CompositeBlock.
      • Add protected call wrapper to block running in CompositeBlock.
      • Add status() method to CompositeBlock.
      • Add __tostring() metamethod to Vector and ObjectVector.
      • Rename type property to data_type in Vector and ObjectVector.
      • Return self in resize(), append() methods of Vector and ObjectVector.
      • Refactor run() method in Block.
      • Rename get_input_types(), get_output_types() methods to get_input_type(), get_output_type() in Block.
      • Improve error messages in Block.
      • Improve debug and error messages in CompositeBlock.
      • Add CompositeBlock control (status, wait, stop) unit tests.
    • C API changes
      • Rename context type from radio_t to luaradio_t.
      • Add luaradio_status() function to wrap CompositeBlock status().
      • Add luaradio_get_state() function to get Lua state.
      • Refactor and improve C API unit test.
      • Clean up fmradio and rds-timesync examples.
    • Block changes
      • Rename RDSFrameBlock to RDSFramerBlock.
      • Rename RDSDecodeBlock to RDSDecoderBlock.
      • Rename AX25FrameBlock to AX25FramerBlock.
      • Rename POCSAGFrameBlock to POCSAGFramerBlock.
      • Rename POCSAGDecodeBlock to POCSAGDecoderBlock.
      • Rename SumBlock to AddBlock.
    • Benchmark changes
      • Reduce factors in downsampler and upsampler benchmarks.
      • Increase buffer sizes in several file source benchmarks.
  • (Prototype) v0.0.16 - 05/03/2016

    • Simplify class module namespacing, including blocks and basic types.
    • Improve basic type names.
    • Remove unused Integer32 basic type.
    • Remove Pipe vmsplice() feature, which was problematic with blocks that use persistent sample buffers.
    • Change Pipe backend from UNIX pipes to UNIX sockets.
    • Eliminate sleeping in CompositeBlock wait().
    • Add version_info table to radio package.
    • Add liquid-dsp library loading to platform module.
    • Add liquid-dsp implementation to the following blocks and classes:
      • FIRFilterBlock
      • IIRFilterBlock
      • HilbertTransformBlock
      • FrequencyTranslatorBlock
      • DFT in spectrum_utils
    • Add file object support to the following sources and sinks:
      • IQFileSource
      • RawFileSource
      • RealFileSource
      • WAVFileSource
      • IQFileSink
      • RawFileSink
      • WAVFileSink
      • RealFileSink
    • Fix infinite loop bug on invalid frame sync codeword in POCSAGFrameBlock.
    • Add "Multiply (Real-valued)" benchmark to benchmark suites.
    • Add SIGINT handling to LuaRadio benchmark suite.
    • Reduce number of filter taps in most modulation, demodulation, and receiver composite blocks.
    • Reduce number of filter taps in most examples.
    • Change decimators to downsamplers in several examples, where additional filtering before downsampling wasn't needed.
  • (Prototype) v0.0.15 - 04/18/2016

    • Add BenchmarkSink block.
    • Remove old LuaRadio and GNURadio benchmark scripts.
    • Add more comprehensive LuaRadio and GNURadio benchmark suites.
    • Improve performance of arg() and abs() methods of ComplexFloat32Type.
    • Improve performance of several blocks:
      • DelayBlock
      • DifferentialDecoderBlock
      • FrequencyDiscriminatorBlock
      • SignalSource
      • FIRFilterBlock
      • HilbertTransformBlock
    • Fix unit tests descriptions for DelayBlock and IIRFilterBlock.
  • (Prototype) v0.0.14 - 04/15/2016

    • Fix resizing zero length vectors.
    • Add get_input_types() and get_output_types() methods to Block base class.
    • Simplify repeated code in some blocks with Block base class methods.
    • Improve portability of several C definitions with typedefs.
    • Fix C error message construction throughout the codebase.
    • Fix clean up in several sinks on early exit before process() is run.
    • Add install hints to error messages for library soft dependencies.
    • Add CPU count, CPU model, LuaJIT version lookups to platform module and the luaradio runner platform dump.
    • Fix RtlSdrSource initialization on Mac OS X platform.
    • Rename RandomSource to UniformRandomSource and add support for custom range and seed.
  • (Prototype) v0.0.13 - 04/09/2016

    • Add luaradio executable with help, version, platform, and verbosity options.
    • Add version string and version number to radio package.
    • Add version string, version number, and version info to C API.
    • Add LuaJIT interpreter check to radio package init.
    • Add debug module for gated printing of debug messages.
    • Use debug module instead of io.stderr in several blocks.
    • Remove C luaradio executable.
    • Rename demos/ to examples/.
    • Rename embed/demos/ to embed/examples/.
    • Update C API unit test.
    • Fix running certain composite block unit tests on FreeBSD.
    • Refactor Python unit test generators and split them into separate files.
  • (Prototype) v0.0.12 - 04/07/2016

    • Rename wbfm_rtlsdr demo to rtlsdr_wbfm_mono.
    • Rename rds_rtlsdr demo to rtlsdr_rds.
    • Improve plotting, variable names, and performance of rtlsdr_wbfm_mono and rtlsdr_rds demos.
    • Add new protocol blocks:
      • AX25FrameBlock
      • POCSAGFrameBlock
      • POCSAGDecodeBlock
    • Refactor RDSFrameBlock and RDSDecodeBlock.
    • Add new demos:
      • rtlsdr_wbfm_stereo
      • rtlsdr_nbfm
      • rtlsdr_am_envelope
      • rtlsdr_am_synchronous
      • rtlsdr_ssb
      • wavfile_ssb_modulator
      • rtlsdr_ax25
      • rtlsdr_pocsag
    • Add new composite blocks:
      • NBFMDemodulator
      • AMEnvelopeDemodulator
      • AMSynchronousDemodulator
      • SSBDemodulator
      • SSBModulator
      • WBFMMonoDemodulator
      • WBFMStereoDemodulator
      • RDSReceiver
      • AX25Receiver
      • POCSAGReceiver
    • Use composite blocks in rds-timeync and fmradio embed demos.
    • Improve unit tests.
  • (Prototype) v0.0.11 - 04/01/2016

    • Fix execution of composite blocks with intermediate sinks.
    • Add support for aliasing a composite block input to multiple block inputs.
    • Add vector_from_array() vector constructor to ObjectType.
    • Move bits_to_number() helper function to BitType.tonumber() static method.
    • Simplify DecimatorBlock, InterpolatorBlock, RationalResamplerBlock constructors.
    • Fix scaling in InterpolatorBlock and RationalResamplerBlock.
    • Fix low pass filter cutoff in TunerBlock.
    • Fix output data type in FloatToComplexBlock type signature.
    • Fix output data type in RawFileSource type signature.
    • Fix size type bug in RawFileSource.
    • Fix file repeat in WAVFileSource.
    • Add RF gain and frequency correction options to RtlSdrSource.
    • Add magnitude reference level option to GnuplotSpectrumSink.
    • Add min/max magnitude options to GnuplotWaterfallSink.
    • Disable file stream buffering in RawFileSink, JSONSink, and PrintSink.
    • Add filename and file descriptor support to PrintSink.
    • Add invert option to DifferentialDecoderBlock.
    • Normalize passband gain to 1.0 in FIR window design functions.
    • Add support for specifying a normalized nyquist frequency to filter blocks.
    • Add support for complex taps to FIRFilterBlock.
    • Add complex bandpass and bandstop FIR window design functions.
    • Add new signal blocks:
      • ComplexBandpassFilterBlock
      • ComplexBandstopFilterBlock
      • ComplexConjugateBlock
      • ZeroCrossingClockRecoveryBlock
    • Add new sink blocks:
      • PortAudioSink
    • Improve unit tests.
    • Add composite block unit tests.
    • Improve namespacing with package inits for blocks and composites.
    • Simplify block imports in composite blocks.
  • (Prototype) v0.0.10 - 03/10/2016

    • Add abs_squared() method to ComplexFloat32Type.
    • Add cosine, sine, square, triangle, sawtooth, and constant real signals to SignalSource.
    • Add file repeat option to IQFileSource, RealFileSource, WAVFileSource, RawFileSource.
    • Add support for multiple channels to PulseAudioSink.
    • Add support for other data types to NullSource and RandomSource.
    • Add support for generating periodic windows to window utilities.
    • Add FFTW3 library and feature flag to platform module.
    • Add DFT and PSD spectrum utilities with Lua, VOLK, and FFTW3 implementations.
    • Add new signal blocks:
      • SubtractBlock
      • ComplexToImagBlock
      • ComplexToFloatBlock
      • FloatToComplexBlock
      • ComplexMagnitudeBlock
      • ComplexPhaseBlock
      • AbsoluteValueBlock
      • MultiplyConstantBlock
      • UpsamplerBlock
      • ThrottleBlock
    • Add new composite blocks:
      • InterpolatorBlock
      • RationalResamplerBlock
    • Add gnuplot-based plotting sinks:
      • GnuplotPlotSink
      • GnuplotXYPlotSink
      • GnuplotSpectrumSink
      • GnuplotWaterfallSink
    • Fix numerical stability problem in FrequencyTranslatorBlock and SignalSource.
    • Improve unit tests.
    • Add plots to RDS and WBFM demos.
  • (Prototype) v0.0.9 - 03/02/2016

    • Simplify type imports in blocks.
    • Fix single process execution to call block cleanup() after finish.
    • Fix block initialization order.
    • Extend file source and sink blocks to:
      • IQFileSource / IQFileSink
      • RealFileSource / RealFileSink
      • RawFileSource / RawFileSink
      • WAVFileSource / WAVFileSink
    • Improve unit tests.
    • Reorganize package init for readability.
  • (Prototype) v0.0.8 - 02/28/2016

    • Add libluaradio library with a C API to the LuaRadio runtime.
    • Add fmradio and rds-timesync demos for libluaradio.
    • Add standalone luaradio interpreter.
  • (Prototype) v0.0.7 - 02/26/2016

    • Add platform module with platform-specific constants and allocator.
    • Handle missing library gracefully in RtlSdrSource and PulseAudioSink.
    • Add portable implementation of Pipe for non-Linux platforms.
    • Add portable Lua implementations of signal processing blocks for Volk-less platforms.
    • Fix other minor portability issues.
    • This release adds support for FreeBSD and Mac OS X platforms.
  • (Prototype) v0.0.6 - 02/25/2016

    • Rename some blocks for consistency.
    • Return nil on EOF from source blocks instead of exiting.
    • Add File[IQ]DescriptorSource blocks and derive File[IQ]Source blocks from them.
    • Fix s32 format in File[IQ]DescriptorSource.
    • Fix bnot() operator in BitType.
    • Fix overflow/underflow handling in Integer32Type.
    • Use POSIX pipes in single process execution.
    • Add more argument and behavior assertions to Block and CompositeBlock.
    • Add unit tests.
  • (Prototype) v0.0.5 - 02/12/2016

    • Change CompositeBlock run() to use multiprocesses by default.
    • Use CStructType factory to build all basic types.
    • Add tostring() support to Block.
    • Handle pipe EOF in Block run() to stop processing and clean up.
    • Update benchmarks.
    • Rename SourceBlock to Source and SinkBlock to Sink.
  • (Prototype) v0.0.4 - 02/12/2016

    • Add support for functions as candidate input types in block type signatures.
    • Add support for variable length type serialization with ProcessPipe.
    • Add ObjectType factory custom Lua object types (serialized with MessagePack).
    • Add JsonSinkBlock and update the RDS demo to use it.
  • (Prototype) v0.0.3 - 02/11/2016

    • Add CStructType factory for custom cstruct types.
    • Add Vector class and resize(), append() methods.
    • Add necessary blocks to implement RDS demodulator / decoder demo.
    • Add TunerBlock and DecimatorBlock composite blocks.
    • Update demos to use composite blocks.
  • (Prototype) v0.0.2 - 02/08/2016

    • Add hierarchical block support to CompositeBlock.
    • Add start(), stop(), wait(), run() controls to CompositeBlock.
    • Add support for linear chain shortcut to CompositeBlock connect() (e.g. connect(b1, b2, b3, ...)).
  • (Prototype) v0.0.1 - 02/06/2016

    • Initial prototype with wbfm demo.