☕️ Мерлин заваривает τσάι 🐌
1.11K subscribers
3.52K photos
64 videos
94 files
2.42K links
💊
Download Telegram
Forwarded from Generic Talks (Bogdan Storozhuk)
Generic Talks S02E03 "Языковая блокировка с рекурсивным обходом на диске"
Оригинальный состав Олег, Искандер и Богдан.

Темы:
1. Github Codespaces
- https://github.com/features/codespaces
2. О причинах появления языков:
- https://nim-lang.org
- https://ziglang.org
- https://www.beeflang.org
- https://www.red-lang.org
3. Locking in WebKit:
- https://webkit.org/blog/6161/locking-in-webkit/
- https://aspenuwu.me/posts/rust-optimization.html
- https://github.com/Amanieu/parking_lot
4. Type filters & Ruleguard
- https://twitter.com/dgryski/status/1317245210041012224
- Что такое фильтры типов в ruleguard
- Фильтры структурных типов в ruleguard (type matching)
- Underlying types
- Что означает “contains?”
- Как выразить фильтр для подвыражения фильтра https://bit.ly/2FEfEjq

5. "Книжный клуб" читаем и обсуждаем Martin Kleppmann / Designing Data-Intensive Applications (2017) CHAPTER 3 - Storage and Retrieval

На следующий раз в "Книжный клуб" читаем и обсуждаем Martin Kleppmann / Designing Data-Intensive Applications (2017) CHAPTER 4 - Encoding and Evolution
Свои вопросы и заметки по главе пишите сюда: @generictalks_bot

Если Вы хотели бы послушать наше интервью с какем-то интересным или хотите сами прийти - присылайте предложения сюда: @generictalks_bot

🎙Наш канал в YouTube - https://bit.ly/3cwXsmI
📹 Шоу с код ревью и кучей интересных советов - https://bit.ly/2zc2w1j (и Телеграм @good_bad_reviewer)
💵 Patreon - www.patreon.com/generictalks

https://soundcloud.com/generictalks/generictalks-s02e03-yazykovaya-blokirovka-s-rekursivnym-obkhodom-na-diske
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/