Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
92b8e8c
attempt to refactor the logwriter to have a more clean surface
roffe Jun 3, 2026
3d19825
update deps
roffe Jun 3, 2026
618e30b
get rid of sysvar order
roffe Jun 5, 2026
59af7f5
add pprof under a debug tag
roffe Jun 8, 2026
d7affb7
move to experiments
roffe Jun 10, 2026
cda8006
add new bus
roffe Jun 10, 2026
62e07bb
remove ebusmonitor
roffe Jun 10, 2026
8f74ee3
remove ebusmonitor
roffe Jun 10, 2026
1cf5892
some concepts for t7logger
roffe Jun 10, 2026
3dbc4fa
use new bus
roffe Jun 10, 2026
b31da7c
update multiplewindows
roffe Jun 10, 2026
f79537c
deps and whatsnew
roffe Jun 10, 2026
76d6ba2
update ecusymbol
roffe Jun 10, 2026
fd7312b
WBL refactor to reconnect port if it's dropped mid logging
roffe Jun 11, 2026
28efe96
widget improvements
roffe Jun 11, 2026
8ec418f
mapviewer optimization
roffe Jun 11, 2026
c27591a
optimize meshgrid
roffe Jun 11, 2026
72ccc10
update deps
roffe Jun 11, 2026
7a96bd1
better meshgrid
roffe Jun 11, 2026
ca275e2
update plotter
roffe Jun 11, 2026
d68d955
cache objects
roffe Jun 11, 2026
b63e817
save
roffe Jun 11, 2026
a20073e
2d graph
roffe Jun 12, 2026
6046190
build pipeline
roffe Jun 12, 2026
8ec8166
save meshgrid with setcursor
roffe Jun 12, 2026
b515346
meshgrid poly support
roffe Jun 12, 2026
99fcc21
meshgrid shader
roffe Jun 12, 2026
44243f7
resolve issue with wbledit object cache
roffe Jun 12, 2026
9f78467
remove unused
roffe Jun 12, 2026
2cef514
update ecusymbol
roffe Jun 12, 2026
aadb984
use opengl shader to draw log plotter
roffe Jun 12, 2026
69284e7
shaders in dials
roffe Jun 12, 2026
988e9ac
update whatsnew
roffe Jun 12, 2026
905822c
revert dial shaders
roffe Jun 13, 2026
e2f8a85
make render mode configurable
roffe Jun 13, 2026
ef9c1a6
fix poly meshgrid
roffe Jun 13, 2026
24af0ea
meshgrid improvements
roffe Jun 13, 2026
8031da5
set default mode for mesh
roffe Jun 13, 2026
59bfd11
save settings
roffe Jun 13, 2026
3c66f3f
refactor settings
roffe Jun 13, 2026
55422fe
more settings
roffe Jun 13, 2026
8762b8c
update secret
roffe Jun 13, 2026
7c82074
fix innovate serial logging
roffe Jun 14, 2026
e4a44f7
save tunnel shader
roffe Jun 14, 2026
3f2c791
tidy
roffe Jun 15, 2026
96d49a2
improved selection and copy paste
roffe Jun 15, 2026
a51146e
fancier meshgrid
roffe Jun 15, 2026
1c641d8
better copy paste on mapviewer
roffe Jun 15, 2026
84653f1
save
roffe Jun 15, 2026
2e22b3b
matrixbuilder and meshgrid updates
roffe Jun 16, 2026
709f7b8
experiment
roffe Jun 17, 2026
9c0590f
add initial AS2 support
roffe Jun 17, 2026
87055af
add coverage view
roffe Jun 17, 2026
988cc34
gocan stuff
roffe Jun 18, 2026
ae0b338
new symbol browser
roffe Jun 18, 2026
4c23dd0
add liveplotter
roffe Jun 18, 2026
02c7205
fix bug in matrixbuilder
roffe Jun 18, 2026
9a97b3c
split out to separate minmax function in plotter
roffe Jun 18, 2026
2c6b0b1
get and set value of plotter tappable text
roffe Jun 18, 2026
5b26a12
use new end of frame marker
roffe Jun 18, 2026
3b7cf9d
add logexport to be able to cut out sections of a log
roffe Jun 18, 2026
e8c860d
use end of frame onCapture
roffe Jun 18, 2026
8e52e1a
add live plot to toolbar
roffe Jun 18, 2026
f0f7eff
add PublishFrame
roffe Jun 18, 2026
6b00801
update whatsnew
roffe Jun 18, 2026
0287f13
update go deps
roffe Jun 18, 2026
614d6e4
better single cell viewing
roffe Jun 19, 2026
e778e60
refactor mainmenu again
roffe Jun 19, 2026
9c5a1cf
update ecusymbol
roffe Jun 19, 2026
92f3186
add button to decr or incr
roffe Jun 19, 2026
f00f7b6
multimap
roffe Jun 19, 2026
e4ee237
toggle 3d mesh from context menu
roffe Jun 19, 2026
b991ed5
minimize support
roffe Jun 19, 2026
02cb2fe
cache borders
roffe Jun 19, 2026
1029260
fix possible crash
roffe Jun 19, 2026
a7dd4a4
restructure toolbar and menu some
roffe Jun 20, 2026
bb8619b
fix bug when toggling 3d mesh
roffe Jun 20, 2026
0ff8cbc
symbolcompare
roffe Jun 20, 2026
e44b0d3
symbolcompare tweaking
roffe Jun 20, 2026
308bc44
add region axis to display open and closed region border
roffe Jun 20, 2026
8517a26
update deps
roffe Jun 20, 2026
df1d676
liveplot
roffe Jun 20, 2026
b6cc041
add ctrl-shift click
roffe Jun 21, 2026
acaacc4
update t7 menus
roffe Jun 21, 2026
c12c612
some menu stuff and experimental scaler
roffe Jun 22, 2026
518e98c
more maps
roffe Jun 23, 2026
02c5166
some housekeeping
roffe Jun 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/linux-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v6.4.0
with:
go-version: '1.26.3'
go-version: '1.26.4'
cache: false
- name: Get dependencies
run: sudo apt-get update && sudo apt-get install 7zip gcc libgl1-mesa-dev libegl1-mesa-dev libgles2-mesa-dev libx11-dev xorg-dev libusb-1.0-0-dev libgtk-3-dev libasound2-dev libftdi1 libftdi1-dev
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v6.4.0
with:
go-version: '1.26.3'
go-version: '1.26.4'
cache: false
- name: Get dependencies
run: sudo apt-get update && sudo apt-get install 7zip gcc libgl1-mesa-dev libegl1-mesa-dev libgles2-mesa-dev libx11-dev xorg-dev libusb-1.0-0-dev libgtk-3-dev libasound2-dev libftdi1 libftdi1-dev
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/windows-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,14 @@ jobs:
submodules: recursive

- name: Install NSIS
uses: repolevedavaj/install-nsis@v1.2.0
uses: repolevedavaj/install-nsis@v1.2.1
with:
nsis-version: '3.11'

- name: Set up Go
uses: actions/setup-go@v6.4.0
with:
go-version: '1.26.3'
go-version: '1.26.4'
cache: false

- name: Install dependencies
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,14 @@ jobs:
submodules: recursive

- name: Install NSIS
uses: repolevedavaj/install-nsis@v1.2.0
uses: repolevedavaj/install-nsis@v1.2.1
with:
nsis-version: '3.11'

- name: Set up Go
uses: actions/setup-go@v6.4.0
with:
go-version: '1.26.3'
go-version: '1.26.4'
cache: false

- name: Install dependencies
Expand Down
7 changes: 6 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,14 @@ txlogger:
release:
fyne package -tags=$(BUILDTAGS) --release

debug: clean cangateway
@echo Using compiler "$(CC)"
-go run -tags=$(BUILDTAGS),debug . 2>&1 | tee run.log


run: clean cangateway
@echo Using compiler "$(CC)"
-go run -tags=$(BUILDTAGS) . 2>&1 | tee run.log
-GOEXPERIMENT=simd go run -tags=$(BUILDTAGS) . 2>&1 | tee run.log

clean:
rm -f cangateway
Expand Down
3 changes: 1 addition & 2 deletions console_linux.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
package main

func InitConsole() {
}
func InitConsole() {}
File renamed without changes.
140 changes: 140 additions & 0 deletions experiments/eventbus/bench_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
package eventbus_test

import (
"strconv"
"testing"

"github.com/roffe/txlogger/experiments/eventbus"
)

// BenchmarkPublishNoSubscribers measures the bare cost of enqueueing a message
// when nobody is listening (the run loop still drains and processes it).
func BenchmarkPublishNoSubscribers(b *testing.B) {
c := eventbus.New(nil)
defer c.Close()

b.ReportAllocs()
b.ResetTimer()
for i := 0; i < b.N; i++ {
c.Publish("topic", float64(i))
}
}

// BenchmarkPublishOneSubscriber measures publish throughput with a single
// active subscriber that immediately drains its channel.
func BenchmarkPublishOneSubscriber(b *testing.B) {
c := eventbus.New(nil)
defer c.Close()

ch := c.Subscribe("topic")
go func() {
for range ch {
}
}()

b.ReportAllocs()
b.ResetTimer()
for i := 0; i < b.N; i++ {
c.Publish("topic", float64(i))
}
}

// BenchmarkPublishManySubscribers measures fan-out cost across N subscribers.
func BenchmarkPublishManySubscribers(b *testing.B) {
for _, subs := range []int{1, 4, 16, 64} {
b.Run(strconv.Itoa(subs), func(b *testing.B) {
c := eventbus.New(nil)
defer c.Close()

for i := 0; i < subs; i++ {
ch := c.Subscribe("topic")
go func() {
for range ch {
}
}()
}

b.ReportAllocs()
b.ResetTimer()
for i := 0; i < b.N; i++ {
c.Publish("topic", float64(i))
}
})
}
}

// BenchmarkPublishParallel measures publish throughput under contention from
// multiple concurrent publishers.
func BenchmarkPublishParallel(b *testing.B) {
c := eventbus.New(nil)
defer c.Close()

ch := c.Subscribe("topic")
go func() {
for range ch {
}
}()

b.ReportAllocs()
b.ResetTimer()
b.RunParallel(func(pb *testing.PB) {
for pb.Next() {
c.Publish("topic", 1)
}
})
}

// BenchmarkSubscribeUnsubscribe measures the cost of the subscribe/unsubscribe
// round trip through the run loop.
func BenchmarkSubscribeUnsubscribe(b *testing.B) {
c := eventbus.New(nil)
defer c.Close()

b.ReportAllocs()
b.ResetTimer()
for i := 0; i < b.N; i++ {
ch := c.Subscribe("topic")
c.Unsubscribe(ch)
}
}

// BenchmarkAggregatorPublish measures publishing to topics watched by the
// default DIFF aggregators, exercising the aggregator index path.
func BenchmarkAggregatorPublish(b *testing.B) {
c := eventbus.New(nil)
defer c.Close()

out := c.Subscribe("VDIFFL")
go func() {
for range out {
}
}()

b.ReportAllocs()
b.ResetTimer()
for i := 0; i < b.N; i++ {
c.Publish("ActualIn.v_Vehicle", float64(i))
c.Publish("ActualIn.v_Vehicle2", float64(i)+1)
}
}

// BenchmarkUnboundedChan measures round-trip throughput of the unbounded
// channel with a concurrent consumer.
func BenchmarkUnboundedChan(b *testing.B) {
ch := eventbus.NewUnboundedChan[int]()
done := make(chan struct{})
go func() {
for range ch.Out() {
}
close(done)
}()

b.ReportAllocs()
b.ResetTimer()
for i := 0; i < b.N; i++ {
ch.In() <- i
}
b.StopTimer()
ch.Close()
<-done
}
File renamed without changes.
Loading
Loading