Ask HN: What are you working on? (October 2025) 🔥 Горячее 💬 Длинная дискуссия
—
Комментарии (858)
- Проекты охватывают от небольших веб-приложений до крупных SaaS-платформ, включая генераторы счетов, инструменты для планирования полетов и даже радиостанций.
- Многие из них начинались как личные проекты, которые со временем выросли в полноценные продукты.
- Некоторые проекты имеют открытый исходный код, другие — нет, но все они демонстрируют сильную фокусировку на удобстве для конечного пользователя и приватности.
- Участники активно делятся обратной связью и предлагают помощь друг другу, что подчеркивает сильное чувство сообщества.
After the AI boom: what might we be left with? 💬 Длинная дискуссия
—
Комментарии (252)
This is where we're headed: https://sibylline.dev/articles/2025-10-12-ai-is-too-big-to-f... Cell phones have been through how many generations between the 80s and now? All the past generations are obsolete, but the investment in improving the technology (which is really a continu
Completing a BASIC language interpreter in 2025
Разработка BASIC-интерпретатора в 2025 году: реализация строковых переменных и сборка мусора
Проект по созданию BASIC-интерпретатора для платформы Intellivision ECS 1983 года выпуска перешёл на новую стадию — добавление поддержки строковых переменных. Изначально система могла работать лишь с числовыми данными, но теперь добавлена работа со строками (A$, B$, C$), включая операции присваивания, ввода и вывода, а также конкатенацию.
Особенность реализации — использование двух отдельных стеков: один для хранения строковых переменных, другой для временных строк в процессе вычислений. Это позволило избежать излишнего усложнения управления памятью. Для обработки строк введён сборщик мусора, который, не увеличивая нагрузку на систему, эффективно управляет памятью, используя маркер 0xCAFE для обозначения свободных участков.
Реализация включает функции для работы со строками, такие как конкатенация, функции LEFT$, RIGHT$, MID$ и другие. Всё это работает на процессоре CP1610 с тактовой частотой 894 кГц, демонстрируя, что даже на ограниченных системах возможна эффективная работа со строками.
Код написан на ассемблере, но логика применима в высокоуровневых языках. Это пример того, как даже в средах с ограниченными ресурсами можно успешно реализовать сложные функции, используя продуманные алгоритмы и эффективные структуры данных.
Комментарии (13)
- В 1978 году Хэл Финни написал 2-килобайтный интерпретатор BASIC для Intellivision, который стал первым встроенным языком программирования для игровой системы.
- Участники обсуждали, что в те годы размер кода и экономия памяти были критически важны, и как это влияло на дизайн и сообщения об ошибках.
- Обсуждение затронуло вопросы раннего периода персональных компьютеров, включая такие редкие темы, как Oregon Trail и TRS-80.
- Ностальгия по тем временам, когда даже простейшие вещи, такие как строки ошибок, были предметом гордости разработчиков, и как это сравнивалось с современными стандартами.
JIT: So you want to be faster than an interpreter on modern CPUs
Проект JIT-компилятора для PostgreSQL сталкивается со сложностями из-за особенностей современных процессоров. Автор объясняет, что даже хорошо написанный интерпретатор может проигрывать в производительности из-за непредсказуемости переходов в switch-based интерпретаторах.
Используя технику "computed gotos" (динамических переходов), можно значительно ускорить интерпретацию, сделав шаблоны переходов более предсказуемыми для предсказателя ветвления процессора. Это может дать до 15-20% прироста производительности.
Автор также упоминает, что его JIT-решение для PostgreSQL будет использовать этот подход, а также другие оптимизации, такие как векторизация и inlining, чтобы превзойти стандартный интерпретатор PostgreSQL.
Кроме того, автор отмечает, что оптимизация под современные процессоры (особенно с их out-of-order исполнением и предсказанием ветвлений) требует осторожного подхода. Например, код должен быть структурирован так, чтобы минимизировать зависимости по данным и максимизировать параллелизм на уровне инструкций.
В итоге, проект направлен не только на создание JIT-компилятора, но и на то, чтобы переосмыслить, как должен работать интерпретатор, чтобы эффективно использовать современные процессоры.
Комментарии (41)
- Обсуждение затронуло ограничения JIT в iOS из-за политики Apple, что влияет на производительность и возможности использования JIT в этой системе.
- Участники обсудили, что JIT-компилятор может быть полезен для оптимизации, но его отсутствие в iOS ограничивает возможности приложений.
- Также обсуждались различные аспекты производительности интерпретатора и JIT, включая влияние на предсказание переходов и спекулятивное исполнение.
- Участники упомянули, что JIT может быть полезен для DSL или других специализированных языков, но ограничения iOS могут затруднить это.
Wireguard FPGA 🔥 Горячее
Разработчики создали Wireguard-FPGA — полностью аппаратную реализацию VPN Wireguard на основе ПЛИС Artix7. Проект с открытым исходным кодом, включая весь RTL, встраиваемое ПО, битстримы и инструменты сборки, что позволяет любому провести полный аудит безопасности. Идея в том, что аппаратная реализация обеспечивает wire-speed производительность даже на недорогих FPGA, а открытость гарантирует отсутствие бэкдоров. Вместо традиционных программных реализаций, которые могут быть уязвимы для атак по сторонним каналам, этот подход обеспечивает физическую изоляцию и эффективность. Проект приглашает к сотрудничеству и аудиту.
Комментарии (149)
- Проект представляет собой реализацию WireGuard на FPGA, что позволяет достичь высокой производительности и низкого энергопотребления, но вызывает вопросы о целесообразности, поскольку обычное ПО может справляться с подобной задачей.
- Обсуждение затрагивает вопрос о том, почему не используется QUIC вместо WireGuard, несмотря на то, что он может предложить схожие возможности и при этом не требует специализированного оборудования.
- Участники обсуждения также поднимают вопрос о том, почему не используется уже готовое решение, такое как OpenVPN или IPSec, которые могли бы быть более подходящими для корпоративного использования.
- Некоторые участники высказывают мнение, что проект является "академическим грантваром", поскольку он не решает практическую задачу, а вместо этого служит демонстрацией возможностей FPGA.
- В то же время, другие участники подчеркивают, что это может быть полезно для обучения и исследований, а также может быть полезно в ситуациях, где требуется высокая безопасность и производительность.
- Наконец, обсуждение также затрагивает вопрос о том, почему не используется уже готовое решение, такое как OpenVPN или IPSec, которые могли бы быть более подходящими для корпоративного использования.
A years-long Turkish alphabet bug in the Kotlin compiler
В Kotlin-компиляторе скрыта ошибка, срабатывающая при сборке проекта в турецкой локали. Из-за неё при попытке скомпилировать код в турецкой локали возникает ошибка парсинга XML от компилятора: строчка var category: CompilerMessageSeverity? = CATEGORIES[qName.toLowerCase()] в функции CompilerOutputParser некорректно обрабатывает турецкий символ I (U+0049), который при приведении к нижнему регистру становится не i (U+0069), а ı (U+0131) — точкой надстрочного i без точки. Из-за этого ключ i не находится в словаре CATEGORIES, и код ошибочно считает, что это неизвестный тег, и выдаёт сообщение об ошибке.
Ошибка скрывалась в коде с 2016 по 2021 год, пока не была обнаружена и исправлена. Теперь код корректно использует локально-независимый toLowerCase(Locale.ROOT), и проблема решена. Это яркий пример того, как тонкости локализации могут вызывать ошибки в интернационализированном ПО, особенно при обработке текста.
Комментарии (145)
- Проблема "турецкое I" встречается везде, где не указывается локаль при работе со строками, и это приводит к багам, когда вместо "I" в турецкой локали превращается в "ı" (без точки) и наоборот.
- Современные языки и фреймворки должны предоставлять единообразные и предсказуемые API, но вместо этого они вынуждают разработчиков указывать локаль каждый раз, что приводит к ошибкам.
- Пользователи с турецкой локалью страдают от багов, которые не могут быть обнаружены автоматически, потому что большинство разработчиков тестируют только на английской локали.
- Это также является примером более широкой проблемы: API-функции, которые не принимают
Localeпараметр, вместо этого полагаясь на дефолтной локали, что может привести к ошибкам.
Комментарии (11)
I don't use VSCode or Copilot, so I'm hoping someone can answer these questions for me - chmod: does Copilot run as the user? Who's file permissions does it respect? - Can Copilot get root access? - Can autoApprove be enabled via the standard interface? Making it possible to batc
Комментарии (28)
Paine kind of hit the nail on the head with this one:> "The law is king!"The 2024 Nobel prize in economics[1] was awarded to a team of three who investigated what causes a nation to prosper and identified "rule of law" as an essential ingredient[2].[1]: https://www.nobelprize.org
Комментарии (102)
Perhaps not surprising, working breeds – many of which are known to have been artificially selected for high toy or predatory motivation – were overrepresented in the sample. This is the vibe I get from my golden retriever. Chasing the tennis ball is more than play, it's a justif
Комментарии (51)
Co-incidentally, I started learning neovim (via lazyvim) this week. I just gave Helix a try, and I think the selection and motion logic is much more natural to me.I might try to learn this instead of neovim for a while. I've recently been on a little side quest to rebuild my edit