Skip to content

Releases: gnuradio/gnuradio

Release v3.9.1.0

22 Mar 23:15
Compare
Choose a tag to compare

[3.9.1.0] - 2021-03-17 "Luck-O-The-Radio"

API is compatible with C++ code written against previous v3.9 releases.

ABI (link time) compatibility is not guaranteed. Out-of-tree C++ code
linked to previous v3.9 releases should be rebuilt against this version.

Project Scope

  • (internal) Build system improvements and fixes
  • (internal) Use C++14 features instead of Boost where possible
  • Fewer compiler warnings (due to fixed code, not removal of warnings!)

OOT Support

  • cmake: standard FindGSL used in lieu of custom one, so OOTs should no longer
    copy this module from the GNU Radio tree if needed
  • modtool: better exception/error handling
  • modtool: will non-interactively add blocks with no parameters
    (--argument-list="")
  • PyBind11 header hash hotfixer
    (gr-utils/bindtool/scripts/binding-hash-hotfixer.zsh) makes life easier

GRC

  • Block param values can be shown as expressions and/or evaluated values. Under
    the View menu, see "Show parameter ..." options.
  • Better handling of gui hints, avoid hiding widgets in cases where some have
    GUI hints and some do not
  • Ensure that strings are valid utf8 when evaluating parameters
  • Save embedded python blocks/modules to hier_block_directory
  • Save config and update recent file sub-menu before executing flowgraph
  • Revert to previous "block id" display behavior
  • Fix drag n' drop issue with Quartz (macOS) backend
  • C++ generated code: remove gnuradio prefix from linked libraries
  • Python generated code: prefix generated modules with flowgraph id
  • connect() will be called for hier blocks even if they don't have ports
  • Check for PyYAML 3.11 (was checking for 3.10 even though 3.11 was required)

gnuradio-runtime

  • Default buffer size can be adjusted by setting buffer_size in the
    [Default] section of the GNU Radio config file. Otherwise, the longstanding
    default of 32768 is used.
  • Windows/Python: add DLL search path, as required by newer versions of Python

gr-audio

  • Windows: reduce priority of Windows native audio to LOW, preferring Portaudio

gr-blocks

  • Message Debug: prints warning when a non-PDU message is received on the
    Print PDU port
  • File Source handles EOF properly in non-seekable files (e.g., pipes)
  • Several bounds checking and boundary condition improvements
  • Remove DC Spike AutoSync algorithm fixed

gr-digital

  • MSK timing error detector improvement
  • Python bindings include control_loop parent class in child class
  • Correlation Estimator parameter threshold well documented

gr-fft

  • New window types: Nuttall, Blackman Nuttall, Nuttall CFD, Welch, Parzen,
    Exponential, Riemann, Gaussian and Tukey

gr-filter

  • Taps blocks (e.g., Low Pass Filter Taps) now propagate parameter changes
  • Filter Designer: IIR/Band Pass/Bessel works

gr-qtgui

  • Add toggling label and icon on plot play/stop button
  • Time Raster Sink: axis labels and ranges are configurable
  • Qt Chooser: label improvements

gr-uhd

  • DEPRECATION: UHD blocks currently accept control messages (e.g. for
    frequency change) as PMT pairs and tuples, in addition to the intended
    PMT dict format. In v3.11, only the dict format will be accepted.
  • Command note: freq messages in this version must be dicts. Additionally,
    the direction key must be present and set to TX or RX.
    Python example: pmt.to_pmt({'freq':100e6,'direction':'RX'})
    The original behavior may be restored in an update, but code should be
    converted to use the dict format in preparation for future versions.
  • set_filter() adds chan parameter
  • Python generated code improved for FE corrections
  • Allow control of frequency and gain in both directions at the same moment
  • Add command handler for mtune ("manual tune")
  • Add GPIO control via messages
  • Add start time param to GRC blocks
  • Support streaming modes: STREAM_MODE_START_CONTINUOUS,
    STREAM_MODE_STOP_CONTINUOUS, STREAM_MODE_NUM_SAMPS_AND_DONE,
    STREAM_MODE_NUM_SAMPS_AND_MORE
  • Documentation improvements
  • Tag sink demo example
  • Better logging of over/underflows, time errors and time tags
  • Added Python binding for ALL_LOS (all local oscillators)
  • uhd_fft application X11/Qt related cleanups

QA

  • waitFor(condition, ...) available for tests that use timeouts

Contributors

At LEAST the following authors contributed to this release.

Release v3.8.3.0

22 Mar 22:41
Compare
Choose a tag to compare

Packaging note

Files were originally released without the volk submodule populated. New "-with-volk" tar files have been added below.

[3.8.3.0] - 2021-03-17

API is compatible with C++ code written against previous v3.8 releases.

ABI (link time) compatibility is not guaranteed. Out-of-tree C++ code
linked to previous v3.8 releases should be rebuilt against this version.

Changed

Project Scope

  • Preference file path may be set using the GR_PREFS_PATH environment variable
  • Lower message latency, previously slow when block aliases were used
  • PMT: is_dict() no longer returns True for PMT pairs, only for PMT dicts
  • Util gnuradio-config-info gets --print-all for those that want it all
  • Allow Thrift versions up thorugh 0.13
  • (internal) Build system improvements and fixes
  • (internal) Reduce Boost usage by replacing bind() with lambdas supported in C++11

OOT Support

  • Allow override of gr python dir by setting -DGR_PYTHON_DIR
  • Modtool will not try to add duplicate block names in a module
  • Modtool can non-interactively add blocks with no parameters (--argument-list="")
  • Modtool will use current installation prefix instead of /usr/local as source of templates

GRC

  • Better handling of gui hints, avoid hiding widgets in cases where some have GUI hints and some do not
  • Dark theme detection fix
  • Add window size option for bokeh gui

gr-audio

  • ALSA nperiods default increased to 32 frames to reduce drops (can be set in conf file under the audio_alsa section)

gr-blocks

  • File Source handles EOF properly in non-seekable files (e.g., pipes)
  • File Source handles large files on Windows
  • Several bounds checking and boundary condition improvements

gr-digital

  • MSK timing error detector improvement
  • Improvements to correlation estimator example
  • Correlate Access Code will not trigger until it receives enough bits to compare to the access code

gr-dtv

  • Performance improvements

gr-filter

  • Filter designer works with Qt5 and Python3
  • Taps blocks (e.g., Low Pass Filter Taps) now propagate parameter changes

gr-qtgui

  • Chooser label defaults now correct
  • Frequency Sink max hold plot for half spectrum width option shows correctly
  • Number Sink honors setting of 'avg' more consistently

gr-uhd

  • Add start time parameter to GRC blocks
  • Add message handler for GPIO control messages
  • Additional master clock rates in GRC blocks
  • UHD source sends tags on center frequency change

gr-video-sdl

  • Correct YUV format options

gr-zeromq

  • Connections no longer hang when flowgraph stops and other end is still connected (ZMQ_LINGER now set)
  • Receipt of bad PMTs logged (instead of exception)

Contributors

At LEAST the following authors contributed to this release.

Release v3.9.1.0-rc1

18 Mar 15:54
Compare
Choose a tag to compare
Signed-off-by: Jeff Long <willcode4@gmail.com>

Release v3.8.3.0-rc1

18 Mar 15:25
Compare
Choose a tag to compare
Signed-off-by: Jeff Long <willcode4@gmail.com>

Release 3.9.0.0

17 Jan 19:33
v3.9.0.0
Compare
Choose a tag to compare

[3.9.0.0] - 2020-01-17

The future is not set, there is no fate but what we make for ourselves. In this
very spirit, GNU Radio 3.9 packs a whole bunch of power when it comes to
transforming the way GNU Radio and its ecosytem can be developed in the future.

Not only did we have great progressions from old dependencies that proved to be
all too problematic (SWIG, Python2), but also did we see an incredibly influx of
people actively working on how maintainable this code base is. This will nurture
the project for years to come.

All in all, the main breaking change for pure GRC users will consist in a few
changed blocks – an incredible feat, considering the amount of shift under the
hood. Mentioning large shifts, the work that went into the PyBind binding, the
CMake modernization, the C++ cleanup, the bug-fixing and the CI infrastructure
is worthy of explicit call out; I especially thank

  • Josh Morman
  • Thomas Habets
  • Jacob Gilbert
  • Andrej Rode
  • Ryan Volz

here.

For developers of OOTs, I'm sure PyBind11 will pose a surprise. If you're used
to SWIG, yes, that's more code to write yourself. But in effect, it's less code
that breaks, and when it breaks, it breaks in much more understandable ways.
Josh has put a lot of effort into automating as much of that as possible.
There's certainly no shortage of demand for that! The ecosystem (remember GNU
Radio's tagline?) is in a steady upwind. We've seen more, and more stable,
contributions from OOT maintainers. That's great!

For in-tree development, newer dependencies and removal of anachronisms will
make sure things move much smoother. Our CI is getting – lately literally every
day – better, which means we not only catch bugs earlier, but also allow for
much quicker review cycles.

One central change:

If you're contributing code upstream, we no longer need you to submit a CLA;
instead, we ask you to just certify, yourself, that you're allowed to contribute
that code (and not, e.g. misappropriating someone else's code).

That's what the DCO (Developer Certificate of Origin) is: Just a quick, "hey,
this code is actually for me to contribute under the project's license"; nothing
more.

Which means that our infrastructure will refuse to let your code into the tree
if you didn't add a

Signed-off-by: Maxime Example <maxime@example.com>

to your commit message. Luckily, git can do that for you: git commit -s.

Changed

Project Scope

  • We now require commits to be signed off (DCO); this means you have to
    attach -s to your git commit command line
  • License headers now SPDX format
  • C++14
  • use C++11 facilities in a lot of places where Boost was still used,
    especially smart pointers, range loops
  • lambdas where boost::bind was used
  • C11
  • Dependency versions:
    • Python 3.6.5
    • numpy 1.13.3
    • VOLK 2.4.1
    • CMake 3.10.2
    • Boost 1.65
    • Mako 1.0.7
    • PyBind11 2.4.3
  • Compiler options:
    • GCC 8.3.0
    • Clang 11.0.0 / Apple Clang 1100
    • MSVC 1910 (Microsoft VS 2017 15.0)
  • VOLK now "regular" dependency, not in-tree submodule
  • numpy now also a CMake-checked hard dependency for Python support
  • Exception Handling: throw by value, catch by reference (clang-tidy check)
  • C++11: Emplace in vectors where you can; brings performance boni, but not
    included in clang-tidy-checks
  • Further clang-tidy based code optimizations:
  • empty() instead of size() == 0
  • override where overriding virtual functions (which we do a lot)
  • Logging: removed all std::cerr and fprintf(stderr,…) by GNU Radio logging
  • Logging: Changed logging format for many multiline error logs
  • purged snprintf, printf logging
  • There were a lot of places where a malloc'ed object was used internally, where
    that was inappropriate. Using simple instance-holding fields now.
  • const for members that were only set at construction time is now desired,
    and implemented in most places
  • const -> constexp in a lot of places.
  • assert -> static_assert
  • An exception-throwing block will now terminate the flow graph process,
    configurable through top_block
  • gr-utils cleanup, folder restructuring
  • config version checks installed CMake file will accept "at least this version"
    now
  • PyBind11 replaces SWIG
    • Full tree conversion from SWIG to Pybind11 bindings
  • Doxygen now uses MathJax, full LaTeX installation no longer required

NOTE: Most of the changes above change the generally preferred coding style
in a lot of situations.

GRC

  • start flowgraph in folder where it resides

gnuradio-runtime

  • When calculating offsets in non-integer rate FEC, lround
  • default seed for gr::random now actually as documented time-dependent
  • loggers moved from gr::block to gr::basic_block
  • PMT serialization
  • PMT dicts no longer indistinguishable from pairs
  • PMT symbol hashing no longer suffers under oddball own implementations

gr-audio

  • Increased ALSA buffer nperiods

gr-blocks

  • add, add_const VOLK'ized, templated
    • this seems to break things in other places, even if it proves to be
      mathematically identical
  • wavfile infrastructure: libsndfile now dependency

gr-digital

  • transcendental block: default to 32 bit float complex, not double
  • Linear equalizer: separate adaptive algorithm, allows for using e.g. trained
    sequences instead of the classical LMS, CMA
  • DFE: better structure for decision history

gr-dtv

  • LDPC encoder: template functions instead of #defined macros
  • LDPC encoder: smaller tables through uint16_t for index tables

gr-fec

  • API uint8_t, not char

gr-fft

  • FFT blocks/functions templatized

gr-filter

  • logging format
  • rational_resampler_base -> rational_resampler

gr-uhd

  • Required UHD version bumped to 3.9.7
  • logging format

Deprecated

gr-analog

  • sig_source: freq port will be removed in the future

gr-audio

  • audio-sink, -source: Windows audio sink/source deprecated, the portaudio
    sink/source works even better under windows anyway

gr-digital

  • In favor of symbol_sync, deprecate:
    • clock_recovery_mm
    • msk_timing_recovery
    • pfb_clock_sync

Added

Project Scope

  • C++ Generation all over the place
  • PyBind bindings + generator
  • Github actions
  • Reproducible builds-compatible CMake TIMESTAMP

gnuradio-runtime

  • block_gateway: set_max_output_buffer
  • GR_PREFS_PATH environment variable sensitivity to configure the path to the
    config file
  • gnuradio-config-info --print-all

GRC

  • option to toggle ID visibilities globally
  • Validation check for QT GUI hints
  • Python snippets

block header parsing tool

  • block header parsing tool (GSoC 2019)

gr_modtool

  • option to convert blacklisted files

gr-analog

  • sig_source: cmd port adds support for dicts, setting of frequency,
    amplitude, offset and phase parameters

gr-blocks

  • selector now has control message ports
  • Rotator-based freq shift convenience wrapper
  • Message-to-Variable and vice versa blocks
  • DC Spike removal
  • IQ Swap
  • Complex to interleaved char / short: scaling option
  • Delay block: control message port
  • Phase Shift block with message port
  • wavfile_sink, _source can now deal with a lot of audio formats:
    uncompressed WAV/AIFF, µ- and A-law compressed audio, OGG/Vorbis, FLAC, even
    octave files
  • Stream Demux, which demuxes streams according to lengths vector
  • rotator: phase() getter

gr-digital

  • OFDM: multiple CP lengths
  • ofdm_equalizer_simpledfe: enable_soft_output
  • Constellation Encoder
  • Constellation: normalization options

gr-fec

  • {en,de}code_rs_8, {en,de}code_rs_ccsds: Reed-Solomon en- and decoders

gr-fft

  • Windows:
    • Gaussian
    • Flat Top
    • Tukey
  • Window build() call now with default beta

gr-filter

  • GRC: File taps loader block
  • Low pass FFT filter convenience wrapper
  • ichar / ishort decimator
  • phase continuity for freq_xlating_fir_filter

gr-network

  • gr-network: a whole new networking blocks module!
    • TCP
    • UDP
  • Much better lockup/multithreading support than 3.7-era blks2 nightmare
    infrastructure :)

gr-qtgui

  • Azimuth/Elevation plot
  • Autocorrelation plot
  • Compass visualization
  • Dial control
  • Gauge: dial, level
  • Distance plot
  • LED-like indicator
  • Message-passing check box
  • Message-passing numeric control
  • Message-passing push button
  • Toggle Button
  • Eye sink
  • Vertical slider

gr-uhd

  • Filter API
  • UHD 4.0 support
  • Power Reference API
  • Bidirectional setting messages on both sink, source

gr-vocoder

  • Codec2 dev branch support
  • FreeDV: In/output rates can differ
  • FreeDV: text message output

gr-zeromq

  • C++ GRC templates
  • Tag filtering for tag-forwarding blocks

Removed

Project Scope

  • VOLK is no longer a submodule
  • Sphinx: consolidate into doxygen, or wiki-maintained block list.
  • Python 2
  • SWIG
  • gru python module

gnuradio-runtime

  • circular_file.cc
  • math/common_factor.hpp

gr-blocks

  • bin_statistics_f
  • log2_const

gr-digital

  • PFB clock sync: set_taps
  • deprecated old OFDM infrastructur
    • ofdm_frame_acquisition
    • ofdm_frame_sink
    • ofdm_insert_preamble
    • ofdm_sync_fixed
    • ofdm_sync_pn
    • ofdm_sync_pnac
    • ofdm_sync_ml
    • ofdm_receiver
  • digital_voice

gr-fft

  • malloc_float, _double: rely on VOLK
  • Goertzel: dtor superfluous

gr-filter

  • deprecated window function duplicates (use them from gr-fft!)

Fixed

Project Scope

  • CMake: Qwt, Log4Cpp detection
  • ctrlport strings unicodified
  • Freedesktop install script was not ...
Read more

Release 3.8.2.0

21 Aug 19:25
Compare
Choose a tag to compare

[3.8.2.0] - 2020-08-21

Changed

Project Scope

  • Call SWIG without -modern flag if new enough to make that inherent, thus
    removing warnings

GRC

  • Mako templating now strict_undefined
  • Show block comments by default
  • dynamically updated block namespaces (execute imports from templates)
  • Name-lookup detection of dark color themes, adjusted input box color scheme

gr-dtv

  • dvb_bbscrambler: LUT 8B alignment (private, but relevant for future usable
    optimization)

Fixed

GRC

  • incorrect "clear console" and "save console" labels
  • generator: flow_graph.py.mako now contains import for print_function for
    compatibility in Py2 generation
  • variable_config.block.yml now properly handles configparser /
    ConfigParser import
  • Change port types of all selected block on key-press cycling, not just first
    one
  • Always check for Python version in flow graph generation, not only in specific
    block types
  • Don't run stale flow graphs
  • Prevent search keystrokes from modifying flowgraph

gr-blocks

  • file_sink flushes contents to file on stop()
  • file_meta_sink block YAML: emit proper default PMT dict
  • XMLRPC client/server block templates: use Py3 XMLRPC when possible

gr-digital

  • soft_dec_lut_gen now explicitly casts 2.0**prec to int
  • map_bb: add missing definition of static constexpr size_t s_map_size

gr-dtv

  • Reduce send_frame_size in UHD examples (broken after UHD v3.13.0.3-rc1)

gr-filter

  • logpwrfft YAML was hiding FFT length
  • FFT frequency range calculation was occasionally off due to abuse of
    numpy.arange

gr-filter

  • GRC band pass filter taps block: use firdes.complex_band_pass when complex
  • firdes.root_raised_cosine gain for unity alpha

gr-qtgui

  • qtgui_chooser regained 3.7 capability to set default
  • Frequency Sink hovering now respects set units
  • GRC blocks had optional stream inputs

gr-uhd

  • ignore len_tag_name in USRP Source YAML generator python
  • uhd_fft/uhd_siggen_gui: import order of sip and Qt
  • GRC example block errors

Added

GRC

  • OS X: Meta modifier key support (eq. Ctrl on other platforms)
  • configuration setting show_block_comments

gr-analog

  • Signal source cmd port

gr-zeromq

  • Message-based ZMQ blocks take bind argument, as necessary for N:1 patterns.
    Changes ABI.

Deprecated

gr-analog

  • Signal source freq port

Contributors

Release 3.8.1.0

09 Apr 20:25
Compare
Choose a tag to compare

[3.8.1.0] - 2020-04-08

Changed

Project Scope

  • clang-tidy improvements
    • Throw exceptions by value, catch by reference
    • emplace_back where applicable
    • empty() instead of vector::size() == 0
  • Use CMake to check for endianness instead of BOOST_BIG_ENDIAN

gr-fec

  • Scipy becomes optional dependency (for polar channel code construction)

gr_modtool

  • use Boost.UTF instead of cppunit

Fixed

Project Scope

  • FindQwt paths
  • floatAlmostEqual unittest assert function wrongly passing on sequence types
  • Only require boost unittest when testing is enabled
  • FindLOG4CPP typo
  • numpy.fft(pack) imports
  • several scipy imports that can be done with numpy alone

gnuradio-runtime

  • block gateway shadowed system port
  • Flaky message passing unit test contained timeout (not the test's job)
  • ctrlport/rpcaggregator & Co: removed storage of references to scope-lifetime objects
  • Sine table generation python was wrong
  • get_tags_in_range for delay < (end-start)
  • premature tag pruning
  • release flattened flowgraph after stopping; fixes restartability/shutdown issues

gr-analog

  • clipping in FM receiver: remove superfluous gain
  • C++ generation for multiple blocks

gr-audio

  • portaudio source: lock acquisition

gr-blocks

  • rotator VOLK workaround

gr-digital

  • map_bb buffer overflow
  • map_bb thread safety
  • additive_scrambler count based reset

gr-fec

  • heap corruption in async_decoder
  • cc_encoder was broken for constraint lengths > 8

gr-fft

  • restore Boost 1.53 compat

gr-qtgui

  • no longer requiring unnecessary key in edit_box_msg

gr-uhd

  • fixed examples under Py3
  • multichannel objects not populating channels

gr_modtool

  • wrong use of input -> raw_input
  • allow empty argument list
  • testing
  • check for and deny TSB under Python
  • QA addition bugs
  • correct path for C++ QA tests

GRC

  • several issues with YAML files
  • nested objects now properly populate namespaces
  • comments now included in block bounds calculation
  • Wiki documentation link removed from OOT blocks' docs tab
  • Dragging connections to auto-hide ports works now
  • generated and re-generated several example flowgraphs
  • bokeh_layout module name
  • Revert toggle buttons to text entry for bool block props, allowing GRC
    variables to be used

Added

Project Scope

  • Codec2 development branch / future compat
  • Boost 1.71 compat
  • CI now checks for formatting

gnuradio-runtime

  • dot graphs now contain message edges
  • Python wrapping for blocks' set_affinity and {g,s}et_alias

gr-uhd

  • UHD Filter API

GRC

  • block affinity, buffer sizes available as advanced options for blocks
  • testing
  • Python snippets (please snippet responsibly!)
  • show_id flag added to embedded python blocks, Probes
  • global option to toggle showing of IDs
  • Help "Keyboard Shortcut" entry

Release Candidate 3.8.1.0-rc1

16 Feb 19:55
Compare
Choose a tag to compare

Release Candidate 3.8.1.0-RC1

Contributors

[3.8.1.0-rc1] - 2020-02-16

Changed

Project Scope

  • clang-tidy improvements
    • Throw exceptions by value, catch by reference
    • emplace_back where applicable
    • empty() instead of vector::size() == 0

Fixed

Project scope

  • FindQwt paths
  • floatAlmostEqual unittest assert function wrongly passing on sequence types
  • Only require boost unittest when testing is enabled
  • FindLOG4CPP typo

gnuradio-runtime

  • block gateway shadowed system port
  • Flaky message passing unit test contained timeout (not the test's job)
  • ctrlport/rpcaggregator & Co: removed storage of references to scope-lifetime objects
  • Sine table generation python was wrong
  • get_tags_in_range for delay < (end-start)
  • premature tag pruning

gr_modtool

  • wrong use of input -> raw_input
  • allow empty argument list
  • testing
  • check for and deny TSB under Python
  • QA addition bugs

gr-analog

  • clipping in FM receiver: remove superfluous gain
  • C++ generation for multiple blocks

gr-audio

  • portaudio source: lock acquisition

gr-blocks

  • broken rotator workaround

gr-digital

  • map_bb buffer overflow
  • map_bb thread safety
  • additive_scrambler count based reset

gr-fec

  • heap corruption in async_decoder
  • cc_encoder was broken for constraint lengths > 8

gr-fft

  • restore Boost 1.53 compat

gr-qtgui

  • no longer requiring unnecessary key in edit_box_msg

gr-uhd

  • fixed examples under Py3
  • multichannel objects not populating channels

GRC

  • several issues with YAML files
  • nested objects now properly populate namespaces
  • comments now included in block bounds calculation
  • Wiki documentation link removed from OOT blocks' docs tab
  • Dragging connections to auto-hide ports works now

Added

Project Scope

  • Codec2 development branch / future compat
  • Boost 1.71 compat
  • CI now checks for formatting

gnuradio-runtime

  • dot graphs now contain message edges

gr-uhd

  • UHD Filter API

GRC

  • block affinity, buffer sizes available as advanced options for blocks
  • testing

Release 3.7.14.0

16 Feb 11:06
Compare
Choose a tag to compare

Release 3.7.14.0

Contributors

[3.7.14.0] - 2020-02-15

Fixed

Project Scope

  • replace remaining calls to thread-unsafe rand with internal random generators

gnuradio-runtime

  • don't give up on looking for configuration files if system directory doesn't exist
  • get_tags_in_range on delay blocks
  • premature tag pruning

gr-blocks

  • 8 bit WAV file reading
  • matrix_multiply no longer wrongly converts complex float to double
  • Boost 1.70 compat

gr-digital

  • UHD packet example: frame bit fixes
  • additive_scrambler count-based reset
  • map_bb buffer overflow, thread safety

gr-dtv

  • falsely failing assert

gr-fec

  • cc_encoder: constraint length > 8

grc

  • Ctrl-F unselects blocks (so that "d" doesn't disable them)

Added

gnuradio-runtime

  • XOROSHIRO128+-based PRNG

gr-digital

  • additive_scrambler test

gr-uhd

  • future UHD compat layer

Changed

Project Scope

  • COMPATIBILITY WARNING: Replaced non-threadsafe (s)rand with our own xoroshiro-based PRNG
  • Whole tree code reformatting

gr-blocks

  • replaced reconfiguring selector with 3.8 backport

gr-channels

  • removed unnecessary delay in selective fading model

gr-digital

  • COMPATIBILITY: Change of random OFDM pilots
  • backport of 3.8 constellation changes

gr-trellis

  • COMPATIBILITY: random interleaver: PRNG change -> different interleaver

Release 3.8.0.0

09 Aug 21:44
v3.8.0.0
Compare
Choose a tag to compare

Release 3.8.0.0

Witness me!

Tonight, we release GNU Radio 3.8.0.0.

It's the first minor release version since more than six years, not without
pride this community stands to face the brightest future SDR on general purpose
hardware ever had.

Since we've not been documenting changes in the shape of a Changelog for the
whole of the development that happened since GNU Radio 3.7.0, I'm afraid that
these release notes will be more of a GLTL;DR (git log too long; didn't read)
than a detailed account of what has changed.

What has _not** changed is the fact that GNU Radio is centered around a very
simple truth:

Let the developers hack on DSP. Software interfaces are for humans, not the
other way around.

And so, compared to the later 3.7 releases, nothing has fundamentally modified
the way one develops signal processing systems with GNU Radio: You write blocks,
and you combine blocks to be part of a larger signal processing flow graph.

With that as a success story, we of course have faced quite a bit of change in
the systems we use to develop and in the people that develop GNU Radio. This has
lead to several changes that weren't compatible with 3.7.

This is an excerpt only:

Fixed

Project Scope

  • Roughly 36 dBBug, (ETOOMANYBUGS)
  • Fixed .so versioning

Changed

Project Scope

  • C++11
  • merged the wholeness of the next branch
  • Dependency version bumps: CMake, GCC, MSVC, Swig, Boost
  • New dependencies: MPIR/GMP, Qt5, gsm, codec2
  • Removed dependencies: libusb, Qt4, CppUnit
  • Python: Python 2 & Python 3 compatible. 3.8 will be the last Py2k-compatible
    release series
  • gengen was replaced by templates (if you don't know gengen, don't do any
    research; save yourself that sorrow)
  • Modern CMake (as far as feasible at this point)
  • VOLK version updated to v2.0.0
  • .clang-format file now dictates coding style
  • clang-format'ed the whole tree.
  • installed CMake files now tell about configuration

gnuradio-runtime

  • reworked fractional tag time handling, especially in the context of resamplers

GRC

  • C++ generation as option
  • YAML instead of XML
  • removed blks2
  • much better canvas tooling
  • consistent gobject usage
  • ROUNDED ARROWS

gr-qtgui

  • moving from Qt4 to Qt5

gr-utils

  • gr_modtool now vastly improved

gr-vocoder

  • improved versatility
  • removed in-tree libgsm, libcodec2, use system-wide libs

Removed

Project Scope

  • Modules gr-comedi, gr-fcd and gr-wxgui are gone

gr-comedi

  • nobody could remember who used this, or for what. It has seen 0 active code
    contributions in the 3.7 lifecycle

gr-digital

  • python-based packet_encoder and related tools: Bugs that were sporadic and
    never fixed, so after long deprecation, we're removing it

gr-fcd

  • since it's currently untestable by the CI, it's being removed, as there was no
    code contributions. Generally, we strive to include all batteries with GNU
    Radio. Re-integration within a more general SDR interface would be desirable.

gr-utils

  • removed PyQwt (dead) based tools

gr-wxgui

  • Unmaintained, breaks on increasingly many systems, always was slower than
    Qtgui. We've been starting to tell people to migrate to Qt since at
    least 2015. Now, we're finally removing it.

Contributors

Read more