fiatjaf
7289da9c72
improve/refactor websocket connections hoping this will fix the undetected disconnections we're seeing.
...
this commit also remove all the sonic envelope parsing and reintroduces filters in REQ as a slice instead of as a singleton.
why? well, the sonic stuff wasn't really that fast, it was a little bit but only got fast enough once I introduced unsafe conversions between []byte and string and did weird unsafe reuse of []byte in order to save the values of tags, which would definitely cause issues in the future if the caller wasn't aware of it (and even if they were, like myself).
and the filters stuff is because we abandoned the idea of changing NIP-01 to only accept one filter per REQ.
2025-07-10 22:58:37 -03:00
fiatjaf
0ae2316523
use IndexByte instead of IndexRune everywhere because it's faster.
2025-05-05 23:37:43 -03:00
fiatjaf
32efaa7c58
tests on root and khatru working.
2025-04-17 20:30:44 -03:00
fiatjaf
5b8954461f
it never ends.
2025-04-16 02:59:47 -03:00
fiatjaf
b4268d649c
a bunch of [32]byte conversions. still more needed.
2025-04-14 17:47:53 -03:00
fiatjaf
7c9c5d7cd9
fix unsafe strings that change underneath us on envelope parsing by force-copying them as gjson doesn't.
2025-03-14 21:09:33 -03:00
fiatjaf
cecc71cd81
fix and improve envelope stuff again, deal with messages as strings on all envelope parsing steps.
2025-03-12 00:18:11 -03:00
fiatjaf
657c6edf6c
remove sonic from the default build, guard it under "sonic" tag for now.
2025-03-10 17:33:32 -03:00
fiatjaf
c9411a3c5b
depressing sonic json decoder implementation, breakingly force COUNT to use a single filter, reorganize envelope tests.
2025-03-06 19:34:36 -03:00
fiatjaf
4fb6fcd9a2
make simdjson great again.
...
now it is generally a little faster than the easyjson approach.
goos: linux
goarch: amd64
pkg: github.com/nbd-wtf/go-nostr
cpu: AMD Ryzen 3 3200G with Radeon Vega Graphics
BenchmarkParseMessage/stdlib-4 90 15616341 ns/op
BenchmarkParseMessage/easyjson-4 110 11306466 ns/op
BenchmarkParseMessage/simdjson-4 162 7779856 ns/op
PASS
ok github.com/nbd-wtf/go-nostr 5.547s
2025-03-05 23:56:15 -03:00
fiatjaf
5bfaed2740
docstrings for many functions.
2025-03-04 11:42:44 -03:00
fiatjaf
be2fe4a019
do not make the simd stuff a requirement for Envelope.
2025-02-25 18:23:38 -03:00
fiatjaf
56e9a5a709
implement envelope, event and filter parsing with simdjson-go.
2025-02-25 17:57:15 -03:00
fiatjaf
0ccc1b8e9c
meaningless optimizations.
2025-02-04 17:52:05 -03:00
fiatjaf
e8d9464938
fix parsing COUNT envelopes without "hll".
2024-12-07 00:21:58 -03:00
fiatjaf
851116d2e3
Merge branch 'hyperloglog'
2024-12-07 00:13:23 -03:00
fiatjaf
529ade9376
nip45: hyperlolog small fixes and improvements. support deterministic offset for hardcoded set of queries.
2024-12-07 00:12:43 -03:00
fiatjaf
72d9aac9b1
replace all ocurrences of encoding/json with json-iterator so we get rid of HTML escaping and hopefully get faster too.
2024-12-03 00:49:27 -03:00
fiatjaf
0d40b40c9c
pool: support CountMany() using hyperloglog.
2024-11-16 17:47:42 -03:00
fiatjaf
a0bf181547
remove HTML escaping from (easy)json encoder everywhere.
2024-11-11 22:55:07 -03:00
Chris Daley
9069fb6743
Removed duplicate array length check
2024-10-07 00:23:30 -03:00
fiatjaf
a094f3a9d2
negentropy.
...
- a way to handle custom messages from Relay (NEG-whatever etc)
- negentropy implementation (adapted from that other one)
- nip77 nostr negentropy extension
- QueryEvents method for RelayStore that returns a channel (makes negentropy syncing work more seamlessly)
2024-09-14 07:40:09 -03:00
fiatjaf
abe84f9089
improve COUNT envelope codec and add a test.
2024-05-20 08:26:13 -03:00
ann
9a29edca41
fix: CountEnvelope json.Marshal
2024-05-20 07:18:27 -03:00
fiatjaf
1bccebbf2a
fix ParseMessage() so it works with CLOSED and improve tests.
2023-12-09 11:29:14 -03:00
fiatjaf
775821f4e5
fix CLOSED->CLOSE marshaling on CloseEnvelope.
2023-12-01 12:57:18 -03:00
fiatjaf
fa20f84ec7
support CLOSED messages.
2023-11-28 18:25:46 -03:00
fiatjaf
9287b9fb5e
accept > 2 items on EOSE and NOTICE envelopes, but ignore them.
...
fixes https://github.com/nbd-wtf/go-nostr/issues/110
2023-11-14 15:45:52 -03:00
fiatjaf
f8fb9e8c26
fix OKEnvelope always requiring the 4th field.
2023-11-04 17:30:19 -03:00
fiatjaf
61cd3130fd
remove unnecessary json tags from cc5979c.
2023-08-21 15:53:03 -03:00
Kay
ac2350c722
style: using effective go and refactoring
2023-08-21 15:50:05 -03:00
fiatjaf
53b9dde6e0
relay.Count()
2023-07-18 16:17:00 -03:00
fiatjaf
f6dddfd770
CountEnvelope.
2023-07-10 20:52:49 -03:00
boreq
b984a598cb
Fix panic in ParseMessage
...
There is a chance the function can panic if a comma is included in the
input which is invalid.
2023-06-20 12:13:48 -03:00
fiatjaf
ccbb44989f
get rid of WriteJSON() and replace calls with manually marshaled envelopes.
2023-05-09 17:02:22 -03:00
fiatjaf
d36fbb95b9
ParseMessage() returns an Envelope, use that on the main relay handler loop.
2023-05-09 16:55:21 -03:00
fiatjaf
f7ce78d7f8
add custom envelope types with json codecs.
2023-05-09 16:31:10 -03:00