* New MIT/X11 license (https://opensource.org/licenses/MIT)
* agc (automatic gain control)
- major code scrub, improved reliability, simplified interface
- block-level operation
* buffer
- new cbuffer objects for dynamic-sized circular buffering
* channel
- new module to define certain channel emulation objects
- new functionality includes carrier frequency/phase offsets,
(time-varying) multi-path, shadowing, and additive noise
* dotprod
- adding method to compute x^T * x of a vector (sum of squares)
* equalization
- improved interface for LMS and RLS equalizers
- simplified methods to support blind operation
* fec (forward error correctino)
- interleaver and packetizer moved from the framing to the fec module
- packetizer now includes data whitening
* fft (fast Fourier transform)
- general speed improvements for one-dimensional FFTs
- completely reimplemented spgram (spectral periodogram) objects to
include both complex and real-values amples with simpler interface
- reimplemented asgram (ASCII spectral periodogram) objects
* filter
- additional prototype create methods, block execution
- added new fftfilt family of objects to realize linear filter
with fast Fourier transforms
- interp family renamed to firinterp, new iirinterp family
- decim family renamed to firdecim, new iirdecim family
- add linear interpolation for arbitrary resamp output
- new multi-stage half-band resampler family
- symsync: improved stability, added rate adjustment to help pull in
sample rate offsets
- added autotests for validating performance of both the
resamp and msresamp objects
* framing
- added `framedatastats` object for counting statistics across different
framing objects (e.g. number of total bytes received)
- adding generic callback function definition for all framing
structures
- qpacketmodem: new object to easily combine modulating and encoding;
buffer of data in, modulated and encoded samples out
- qpilotgen/qpilotsync: new objects to add and synchronize pilot symbols
to modulated symbols to recover carrier frequency/phase, and gain
- framing objects: frame64, flexframe now use qpacketmodem, qpilotgen, and
qpilotsync objects for unified interface and vastly improved performance
- flexframe: vastly simplified interface
- qdetector: new family for pre-demodulator synchronizion and detection
- moved interleaver and packetizer objects to `fec` module
- symstream: new family for generating random stream of modulated samples
- msource: new family for generating multiple signals for a single source,
including tones, noise, modulated symbols
- symtrack: new family for tracking a stream of symbols and recovering
signal level, timing, carrier frequency/phase without pilots
* math
- new windowing methods (e.g. 7-term Blackman-harris window)
* matrix
- adding smatrix family of objects (sparse matrices)
- improving linear solver methods (roughly doubled speed)
* modem
- re-organizing internal linear modem code (no interface change)
- freqmod/freqdem: new interface, block-level execution for analog FM
- cpfskmod/cpfskdem: new family for generic non-linear continuous-phase
frequency-shift modulation (e.g. minimum-shift keying)
- fskmod/fskdem: new family for non-coherent frequency-shift keying
modulation, often with many samples per symbol (e.g. 256-FSK)
* multicarrier
- adding OFDM framing option for window tapering
- simplfying OFDM framing for generating preamble symbols (all
generated OFDM symbols are the same length)
- adding run-time option for debugging ofdmframesync
- adding method for initializing subcarriers with frequency range
* nco (numerically-controlled oscillator)
- general performance improvements, adding block-level execution
* optim
- gradsearch (gradient search) uses internal linesearch for
significant speed increase and better reliability
- gradsearch interface greatly simplified
* utility
- build no longer auto-generates tables at compile time (helps with cross
compilation)
* vector
- new module to simplify basic vector operations
* miscellany
- documentation moved from core repository to website
- global header file (`liquid.h`) include more structured source
- consistent naming of reset() methods for most objects