Published November 6, 2025
| Version v4
Software
Open
Surfer 0.4.0
Authors/Creators
Description
Surfer is a waveform viewer designed to be extensible and to run anywhere, both as a native app and on the web.
Added
- New commands
goto_cursor,cursor_set,marker_set,marker_remove. Markers can be accessed through their names or numbers as#3etc. - It is possible to pan with the right/secondary mouse button.
- Change the relative size of the Scope and Variable lists.
- Fixed-point translators based on index value (fractional bits have negative indices), suitable for
sfixedVHDL-types etc. - Add grouping of variables (and groups).
- It is possible to add scopes as groups, possibly recursively.
- Surfer automatically select a corresponding translator for the VHDL types
signed,unsigned,sfixed, andufixed. - It is now possible to drop state files onto Surfer to load them.
- A script,
surfer.sh, that can be used to easily start Windows Surfer from WSL. Download from repo and follow the instructions in the script. - It is now possible to copy the variable name of the focused variable by right-clicking on the name.
- Right-click menu for scopes to add variables in scopes.
Ctrl+snow saves the state file.- If there is a file ending with
.surf.ronin the current directory, there will be a dialog asking if it should be loaded (configurable to either ask, always load, or never load). - The variable filter can now filter based on port direction and optionally group based on port direction.
- Measure time by holding shift and left-click (primary mouse button). Configure color and line width using
measurein theme. Can be changed to not need shift by setting the configprimary_button_drag_behaviortoMeasure(dragging the cursor will now require shift) or by menu entry. - The arrow between transactions can now be fully configured, including line width and arrow properties.
- The maximum size of the "X" between vector transitions can be configured using `vector_transition_width´ (default 6).
- It is possible to configure the mouse gestures.
- LoongArch64 (LA64) instruction translator.
- The height of the waves can be modified by right-clicking on the variable name and use the "Height" submenu. The available options can be configured using
waveforms_line_height_multiples. - There is now an app_id for use with Wayland to identify the Surfer window:
org.surfer-project.surfer. - It is now possible to run a command file/script using the menu, toolbar, or the new commands:
run_command_fileorrun_command_file_from_url. - New config of wide signal fill:
wide_opacity - Translators can now be written in WASM and loaded at runtime.
- Translators an now translate variable names into source code locations
- Right click now pans the view
- "Expand scope" in variable context menu selects the containing scope and expand the tree.
- Two accessible color themes, one light and one dark, based on Petroff.
- You can now scale the UI with
ctrl/+ and ctrl/- - Various changes to the Waveform Control Protocol
- Add
add_scope_recursive - Add
add_scope - Fix greetings
- Send waveforms_loaded on loads not triggered by WCP
- Add sources to waveforms_loaded
- Require greetings
- Change the WCP injection API to be more similar to CXXRTL
- Adds events for drivers and loads to a signal
- Add
Changed
survernow sends data in a compressed format.- The scope list is sorted.
mnow adds a marker (next number), while toggling the menu is changed toAlt+m.- Surfer state-files now ends with
.surf.ron. - To drag the cursor, you now need to hold shift.
- BREAKING: Mouse gesture line style moved from config to theme.
- BREAKING: Arrow between transactions can be fully configured, so
relation_arrowis now a subsection and not a simple color. - BREAKING: The config settings
autoreload_filesandauto_load_sibling_state_fileshave changed format fromOption<bool>to an enum with the valuesAlways,Never, andAsk.
Fixed
- Crash when adding too many viewports/trying to draw zero-sized viewports.
- It is again possible to correctly build Surfer with or without selected features.
- Wellen backend updated with better support for GHW-files and incomplete FST-files among other things.
- Loading files with many variables should now be significantly faster.
- It is no longer possible to zoom in arbitrarily much, avoiding some issues related to that.
- Crash when using automatic time scale and underlying waveform file has very high resolution.
- The mouse gesture zoom in now starts at the exact click location in x-direction.
- Surfer should be more responsible when having an active scope with a large number of variables.
- Time scale is no longer reset after reload.
- Adding many variables (recursive scopes etc) in one go, should be significantly faster.
- Add background to multi-bit signals. (Enabled in themes, default in the light theme)
- The right-most clock edge line is now drawn.
- More settings are saved in the state.
- Crash when zooming before waveform file is fully loaded.
Removed
Other
- egui is updated to 0.33. This can lead to minor visual changes, including more clear text rendering. If something looks worse, please report!
Files
surfer-v0.4.0.zip
Files
(11.3 MB)
| Name | Size | Download all |
|---|---|---|
|
md5:b5060cd5ef43e905608212b7d2060c63
|
11.3 MB | Preview Download |
Additional details
Related works
- Is continued by
- Software: https://gitlab.com/surfer-project/surfer (URL)
- Is identical to
- Software: https://gitlab.com/surfer-project/surfer/-/tree/v0.3.0 (URL)
Dates
- Created
-
2024-12-20
Software
- Repository URL
- https://gitlab.com/surfer-project/surfer
- Programming language
- Rust
- Development Status
- Active