Hacker News Digest

Тег: #mojo

Постов: 2

ML needs a new programming language – Interview with Chris Lattner (signalsandthreads.com) 🔥 Горячее 💬 Длинная дискуссия

  • Крис Латтнер (LLVM, Swift) делает новый язык Mojo, чтобы ML-код был быстрым и удобным.
  • Проблема: GPU-ядра пишутся на CUDA/OpenCL вручную, медленно и зависят от одного вендора.
  • Решение: язык с метапрограммированием и типами, который «знает» об аппаратуре и генерирует оптимальный код под любую платформу.
  • Цель: один код → любой GPU/CPU, открытая экосистема, no lock-in.

by melodyogonna • 05 сентября 2025 г. в 11:33 • 291 points

ОригиналHN

#mojo#python#cuda#opencl#gpu#metaprogramming#machine-learning#llvm#swift#pytorch

Комментарии (255)

  • Mojo обещает «Python++, но быстрый», но до сих пор нет полноценных классов, а «полный суперсет» превратился в мягкое «всё ещё не Python».
  • Лицензия проприетарная — для многих это стоп-фактор: «сделайте GPL или идите лесом».
  • Экосистема Python неподвластна: все уже завязаны на PyTorch/CUDA, а Mojo пока не даёт причин мигрировать.
  • Julia, Elixir/Nx, CuPy, Triton, Numba — всё уже умеют «быстро + GPU», без нового языка.
  • Итог: Mojo выглядит технически интересным, но «ещё один закрытый язык» в 2025 году воспринимается как ненужный риск.

Forking Chrome to render in a terminal (2023) (fathy.fr)

  • Рисование
    Терминал умеет только моноширинные символы и escape-последовательности. Используем нижний полублок , задавая цвет фона (верхний пиксель) и символа (нижний).

    fn print_pixels_pair(top, bottom, (x, y)) {
        println!("\x1b[{};{}H\x1b[48;2;{t}m\x1b[38;2;{b}m▄", y+1, x+1, t=top, b=bottom);
    }
    
  • Текст
    Создаём TextCaptureDevice в Skia: перехватываем onDrawGlyphRunList, преобразуем glyph → Unicode, вызываем Rust-функцию draw_text.
    Добавляем очистку текста при заливке прямоугольников:

    if (paint.getStyle() == kFill_Style && paint.getAlphaf() == 1.0)
        clear_text(rect);
    
  • Ввод
    Читаем stdin, парсим escape-коды клавиш/мыши, передаём их в Chromium через DOM-события.

  • Pipe-режим
    carbonyl --pipe рисует в stdout, позволяя встраивать браузер в скрипты.

  • Mojo
    Заменяем GPU-процесс на заглушку, отключая лишние сервисы.

  • Layout
    Подгоняем device_scale_factor и viewport под размер терминала, чтобы 1 px = ½ клетки.

  • LoDPI
    На 1×-экранах включаем сглаживание, чтобы символы не «дребезжали».

  • Цвет
    Палитра 6×6×6 или 24-бит truecolor; приводим цвета к ближайшему доступному.

  • Заголовок
    ESC-операторы меняют заголовок окна и вкладки tmux.

  • Итог
    Carbonyl запускает весь веб в терминале без X11/Wayland: cargo install carbonyl.

by riddley • 05 сентября 2025 г. в 00:54 • 140 points

ОригиналHN

#rust#cpp#skia#chromium#mojo#terminal#unicode#pdf#podman#youtube

Комментарии (17)

  • Carbonyl — терминальный браузер на движке Chrome, удивительно шустрый и юзабельный, особенно с --zoom=300 --bitmap.
  • Пользователи просят добавить Kitty Graphics Protocol, sixel/chafa для нормального вывода картинок без ASCII-арта.
  • Проект вдохновлён browsh, но работает быстрее; автору даже помог получить работу.
  • Запускается в podman, показывает YouTube «кубиками» и почти справляется с капчей (могут помочь мультимодальные LLM).
  • Под капотом — Skia и Mojo из Chromium, что позволяет рендерить всё, включая PDF.