@Sean_McDowell@dougbentley A relevant comparison: Was John the Baptist a martyr? He was killed (instigated by Herodias) for calling out Herod's sin of adultery. If yes, then it seems that holding a Christian worldview and being killed for it could fit the definition.
@robfig Code generation was explored and shown to be much faster for small programs, but the benefits diminish greatly for large programs. There is value in providing it, but was not deemed an acceptable approach for all cases (esp. large binaries).
@robfig Yes, they use golang/pb2. It provides reflection APIs so that different message representations can interoperate. This allowed for experimentation with different underlying implementations that are faster. Good to see other implementations that are v2-compatible.
@ablewhiskey@maisem_ali@Tailscale Correct. A key is just an opaque token that gives you authority to perform some action (e.g., authorize a node, call API method, etc.). The /keys endpoint is intended to support all things related to keys, but some functionality is still missing.
@_smitop@Tailscale@xe@bradfitz @dave_universetf @commaok#TailscaleUp@bradfitz can comment more, but some thoughts:
1) benefit from upstream changes quicker,
2) experiment with changes before merging upstream (e.g., https://t.co/5cKRoxufBL),
3) make minor breaking changes that can't be upstreamed but is safe for our usages.
@JohanBrandhorst@katie_hockman Yep, we'd like to move over to native fuzzing build into the Go toolchain. The existing third-party fuzzing support has several friction points by nature of being a non-native implementation. See https://t.co/BS3Ejfsj9q
@mvdan_ Happy to see fuzzing move forward, but https://t.co/AKIc8gVk8y is currently marked as "Proposal-Hold". Did I miss something about this for 1.17?
@kenners@SpaceX Congratulations on your many years there! I still remember when we started around the same time working Iron Maiden and Firestorm in the wee hours of the night.
@_zombiezen_ @dgryski@commaok The Roughtime implementation from @agl__ (https://t.co/6cSMxGmlB1) provides a server that is strict is what it accepts and is liberal in what it provides. It's the complete opposite of "Postel's Law"; perhaps we should call this "Langley's Law"
@jyzg @Jeffinatorator @bradfitz@Tailscale A challenge in Go is that most Go binaries have all their dependencies statically linked in. Thus, disjoints sets of Go binaries each using Brotli are unlikely to dynamically share that dictionary.
@Jeffinatorator @bradfitz@Tailscale Thanks for diving into this. There seems to be quite a number of low-hanging fruit of things we can do today like making protowire.ParseError not inlineable.
@Jeffinatorator @bradfitz@Tailscale On the topic of raw descriptors, if we wanted to minimize their footprint, Brotli does amazingly well on them due to its use of a static dictionary. However, Brotli's static dictionary itself incurs a fixed cost of ~120KB.
@Jeffinatorator @bradfitz@Tailscale The raw descriptors take up some, but they are actually far less than people think. For that reason, we stopped compressing them in v1.4 and on since the binary size reduction didn't quite justify the CPU cost of decompressing them.
@bradfitz@Tailscale Heh... Go protobufs have not been optimized at all for the mobile environment. \cc @Damien_Neil
I'm curious how much of that cost is initial overhead. What's it look like for a single message with two fields? or two messages?