Go1.15 неправильно инициализирует массивы больших размеров (больше чем 2⁹ элементов)
При создании массива
https://github.com/golang/go/issues/42054
При создании массива
var xx [1<<32]byte элементы примут случайные значения {0, 1}. Судя по всему проблема связана с новым линкеромhttps://github.com/golang/go/issues/42054
GitHub
cmd/compile: large variable not initialized to 0 · Issue #42054 · golang/go
What version of Go are you using (go version)? Initially spotted on playground (1.14.9), but also reproduces with 1.15.2 and: $ go version go version devel +3036b76df0 Sat Oct 10 16:06:07 2020 +000...
Forwarded from Медуза — LIVE
В Перу археологи обнаружили 37-метровый геоглиф кошки (то есть нанесенные на землю узоры).
Животное разлеглось прямо на склоне холма на плато Наска. Эксперты предполагают, что рисунок сделали примерно в 500-100 годах до нашей эры, что делает эту кошку одним из древнейших обнаруженных геоглифов.
Животное разлеглось прямо на склоне холма на плато Наска. Эксперты предполагают, что рисунок сделали примерно в 500-100 годах до нашей эры, что делает эту кошку одним из древнейших обнаруженных геоглифов.
☕️ Мерлин заваривает τσάι 🐌
Работающий исходник игры Жизнь, отформатированный в виде глайдера https://twitter.com/david3141593/status/1312509195158056962
YouTube
Donut-shaped C code that generates a 3D spinning donut
"Donut math: how donut.c works" blog post by Andy Sloane:
https://www.a1k0n.net/2011/07/20/donut-math.html
Deobfuscated code: https://bit.ly/2BITbQm
https://www.a1k0n.net/2011/07/20/donut-math.html
Deobfuscated code: https://bit.ly/2BITbQm
Реймаршинг движок на чистом Fennel (это такой лисп, транслируется в lua) и Love движке
Офигительная с технической точки зрения реализация, жаль только из-за зверски низкой производительности представляет исключительно академический интерес.
#absoluteMadman
https://andreyorst.gitlab.io/posts/2020-10-15-raymarching-with-fennel-and-love/
Офигительная с технической точки зрения реализация, жаль только из-за зверски низкой производительности представляет исключительно академический интерес.
#absoluteMadman
https://andreyorst.gitlab.io/posts/2020-10-15-raymarching-with-fennel-and-love/
andreyorst.gitlab.io
Raymarching with Fennel and LÖVE
Previously I decided to implement a rather basic raycasting engine in ClojureScript. It was a lot of fun, an interesting experience, and ClojureScript was awesome. I’ve implemented a small labyrinth game and thought about adding more features to the engine…
Zig конечно суров
Это выглядит как динамик диспатч, но на самом деле он компайл тайм
Это выглядит как динамик диспатч, но на самом деле он компайл тайм
// in stdlib
pub fn serialize(self: *Serializer, value: var) !void {
const T = comptime @TypeOf(value);
if (comptime std.meta.trait.hasFn("serialize")(T)) {
return T.serialize(value, self);
} else {
self.defaultSerialize(value);
}
}
// in my code
struct Foo {
foo: usize,
fn serialize(self: Foo, serialize: *Serializer) !void {
...
}
}
Forwarded from Random three body problem
This media is not supported in your browser
VIEW IN TELEGRAM
Initial states:
m: 1.637 x: -7.586 y: -8.681 vx: -0.039 vy: -0.028
m: 7.617 x: 0.310 y: 5.609 vx: 0.806 vy: 0.173
m: 2.975 x: -4.561 y: -4.319 vx: 0.031 vy: -0.443
Interest-ness score: 69
m: 1.637 x: -7.586 y: -8.681 vx: -0.039 vy: -0.028
m: 7.617 x: 0.310 y: 5.609 vx: 0.806 vy: 0.173
m: 2.975 x: -4.561 y: -4.319 vx: 0.031 vy: -0.443
Interest-ness score: 69
Forwarded from Bortlog
Вот вам подборочка хаков из кишочек Pebble:
1) https://github.com/cockroachdb/pebble/blob/master/internal/rawalloc/rawalloc.go
Аллоцируем неинициализированый (незануленый) слайс байт. Иногда надо если Вы знаете что всеравно сейчас перезапишите все эти байты своими, так что на инициализацию платить не хочется. Еще бывают случаи что вы предаллоцируете такой слайс, но может на полную его использовать не будете, поэтому вручную делаете инициализацию ленивой. Остальные варианты использования можете придумать сами и написать в коментарии.
2) https://github.com/cockroachdb/pebble/blob/master/internal/fastrand/fastrand.go
Прилинкованый
3) https://github.com/cockroachdb/pebble/blob/master/internal/bytealloc/bytealloc.go
Если Вы знаете что сейчас будете аллоцировать много маленьких байтслайсов можно предалоцировать их в одном слайсе побольше.
4) https://github.com/cockroachdb/pebble/blob/master/internal/intern/intern.go
Смотрите кто использует
5) https://github.com/cockroachdb/pebble/tree/master/internal/invariants
Как понять что тебя запустили под рейс детектором.
1) https://github.com/cockroachdb/pebble/blob/master/internal/rawalloc/rawalloc.go
Аллоцируем неинициализированый (незануленый) слайс байт. Иногда надо если Вы знаете что всеравно сейчас перезапишите все эти байты своими, так что на инициализацию платить не хочется. Еще бывают случаи что вы предаллоцируете такой слайс, но может на полную его использовать не будете, поэтому вручную делаете инициализацию ленивой. Остальные варианты использования можете придумать сами и написать в коментарии.
2) https://github.com/cockroachdb/pebble/blob/master/internal/fastrand/fastrand.go
Прилинкованый
lock free uint32 рандом из рантайма Go.3) https://github.com/cockroachdb/pebble/blob/master/internal/bytealloc/bytealloc.go
Если Вы знаете что сейчас будете аллоцировать много маленьких байтслайсов можно предалоцировать их в одном слайсе побольше.
4) https://github.com/cockroachdb/pebble/blob/master/internal/intern/intern.go
Смотрите кто использует
sync.Pool для построения кеша интернированых строк. А я то думал что первым додумался так ипользовать Pool 😐 в https://github.com/storozhukBM/pcache5) https://github.com/cockroachdb/pebble/tree/master/internal/invariants
Как понять что тебя запустили под рейс детектором.
GitHub
pebble/internal/rawalloc/rawalloc.go at master · cockroachdb/pebble
RocksDB/LevelDB inspired key-value database in Go. Contribute to cockroachdb/pebble development by creating an account on GitHub.
#TIL в русскоязычной википедии есть интерактивная схема московского метро. Вроде ничего особенного, но потыкать на станции и линии приятно
https://ru.wikipedia.org/wiki/Шаблон:Интерактивная_схема_Московского_метрополитена
https://ru.wikipedia.org/wiki/Шаблон:Интерактивная_схема_Московского_метрополитена
Forwarded from 🇺🇦 Go performance channel (Oleg Kovalov)
proposal: cmd/compile: switch to a register-based calling convention for #golang functions
Preliminary experiments indicate this will achieve at least a 5–10% throughput improvement across a range of applications
is accepted! 🚀
https://go.googlesource.com/proposal/+/master/design/40724-register-calling.md
https://github.com/golang/go/issues/40724
Preliminary experiments indicate this will achieve at least a 5–10% throughput improvement across a range of applications
is accepted! 🚀
https://go.googlesource.com/proposal/+/master/design/40724-register-calling.md
https://github.com/golang/go/issues/40724
GitHub
cmd/compile: switch to a register-based calling convention for Go functions · Issue #40724 · golang/go
I propose that we switch the Go internal ABI (used between Go functions) from stack-based to register-based argument and result passing for Go 1.16 1.17. I lay out the details of our proposal and t...
Вызывать C из Rust? А как насчёт исполнять C из Rust?
https://twitter.com/mnt_io/status/1321129758848155649
https://twitter.com/mnt_io/status/1321129758848155649
Twitter
Ivan Enderlin 🦀
Oops… C in Rust. More to come :-). Please @rustlang, don't block me 🙏! #rustlang #c #cpp #clang
Forwarded from DevZen Podcast (Unofficial)
🎙️Скорее всего, через 10 минут (22:30 MSK) будет прямой эфир подкаста. Также можно почитать темы слушателей и пообщаться в gitter-чате