☕️ Мерлин заваривает τσάι 🐌
1.11K subscribers
3.52K photos
64 videos
94 files
2.42K links
💊
Download Telegram
Go1.15 неправильно инициализирует массивы больших размеров (больше чем 2⁹ элементов)

При создании массива var xx [1<<32]byte элементы примут случайные значения {0, 1}. Судя по всему проблема связана с новым линкером


https://github.com/golang/go/issues/42054
Как всё начиналось / как стало
Forwarded from Медуза — LIVE
В Перу археологи обнаружили 37-метровый геоглиф кошки (то есть нанесенные на землю узоры).

Животное разлеглось прямо на склоне холма на плато Наска. Эксперты предполагают, что рисунок сделали примерно в 500-100 годах до нашей эры, что делает эту кошку одним из древнейших обнаруженных геоглифов.
Реймаршинг движок на чистом Fennel (это такой лисп, транслируется в lua) и Love движке

Офигительная с технической точки зрения реализация, жаль только из-за зверски низкой производительности представляет исключительно академический интерес.

#absoluteMadman
https://andreyorst.gitlab.io/posts/2020-10-15-raymarching-with-fennel-and-love/
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 {
...
}
}
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
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
Прилинкованый 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/pcache

5) https://github.com/cockroachdb/pebble/tree/master/internal/invariants
Как понять что тебя запустили под рейс детектором.
#TIL в русскоязычной википедии есть интерактивная схема московского метро. Вроде ничего особенного, но потыкать на станции и линии приятно

https://ru.wikipedia.org/wiki/Шаблон:Интерактивная_схема_Московского_метрополитена
Выкатили превью нового фронта для индекса гошных модулей

https://beta.pkg.go.dev/
🎙️Скорее всего, через 10 минут (22:30 MSK) будет прямой эфир подкаста. Также можно почитать темы слушателей и пообщаться в gitter-чате