Yea! I think we can get BLAKE2b within the same margin once they release SIMD instructions for WASM. The C blake impl is using SSE instructions that are CPU specific and makes it hard to beat right now. SIMD should close that gap.
Like BLAKE2b is relies heavily on 64bit integers so WASM gave it a big perf boost. Early benchmarks show that it is only ~10% slower than the C++ version
hello again old friends
@Dominic Running it adds a point to the map. FYI it records your IP. I should have mentioned that.
In my experience whenever UPnP/NAT-PMP works UDP hole punching works as well. However I've found that UDP hole punching works in waaay more cases than the former (UPnP usually requires you to setup something in your router, i.e. only for techies). Therefore I mostly care about hole punching.
UDP hole punching combined with some proxy support for the 10-20% cases where it doesn't work and multicast dns for finding local peers is quite a good stack. If you are connecting to a swarm that doesn't need to be fully connected to 10-20% goes to ~0 pretty fast as well!
I've been testing the p2p friendliness of various networks I connect to during the last months, ie. do they support udp hole punching?
A map showing the results is available here, http://mafintosh.neocities.org/map.html
Thumbs up means hole punching worked. Poo means... well... that it failed.
If you want to help out testing networks you can install p2p-test and run it on networks come across
npm install -g p2p-test p2p-test
You can see a digest of the data collected here as well, http://p2p-test-1.mafintosh.com. Currently around ~80% of networks tested support udp hole punching.
To fix the curl command just add the
-L flag (follow redirects)
curl -LO http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/physical/ne_110m_land.zip
Yes the branch is currently under heavy development so the docs are ... very lacking. It is basically just my hypercore module, https://github.com/mafintosh/hypercore (distributed append-only logs with support for sparse replication) backed by a flumelike flat file backend. We are calling the protocol "sleep" (max has some fancy acronym for this).
Interesting idea about the weakmap! The random access abstraction is similar to the interface you have in aligned-block-file but a bit more generic. It is basically just
read(offset, length, cb) and
write(offset, buf, cb). You then just implement all the other log stuff on top of an object that provides this. Makes it easier to get it running in the browser as you can just pass in an instance that just writes to memory fx.
The idea is to have a abstract-leveldown like test case for these storage providers also.
@Dominic Loving this. We should perhaps hack on some simple key-value views on top of flume when you're in Copenhagen!
FYI I have my own "flume" experiment here, https://github.com/mafintosh/hypercore/tree/sleep
I've been using https://github.com/mafintosh/random-access-file as the "leveldown" of these experiments instead of coupling to the file system. That means I can switch the backend to other storage providers such as https://github.com/mafintosh/random-access-memory, https://github.com/mafintosh/random-access-page-files
Finally got my local patchwork up and running again!
nice! just got back online again on patchwork. will join next time
whats some good channels to subscribe to now?