Commit Graph

38 Commits

Author SHA1 Message Date
fiatjaf 55a43e46b7 use xhex everywhere. 2025-11-23 06:57:54 -03:00
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