Are-we-fast-yet implementations in Oberon, C++, C, Pascal, Micron and Luon
Проект представляет собой набор реализаций бенчмарка "Are-we-fast-yet" на различных языках программирования, включая Oberon, C++, C, Pascal, Micron и Luon. Основная цель - сравнение производительности разных языков через единый тестовый набор. Реализации позволяют разработчикам оценить эффективность каждого языка в стандартных задачах и понять, как современные языки конкурируют с классическими.
Бенчмарк охватывает ключевые алгоритмические задачи, такие как сортировка, обработка строк и математические вычисления. Интересно, что даже в 2023 году некоторые классические языки, как C и Pascal, демонстрируют конкурентоспособную производительность, в то время как более современные языки предлагают разные компромиссы между скоростью и выразительностью кода. Проект предоставляет ценный ресурс для выбора языка программирования под конкретные требования производительности.
Комментарии (19)
- Обсуждение в основном касается языков Oberon и их компиляторов, включая их производительность и репозиторий.
- Участники обсуждают, что репозиторий недавно добавил реализацию на C++, но она оказалась значительно медленнее.
- Также поднимается вопрос о названии Micron — участники считают его плохим выбором, так как может вводить в заблуждение.
- Появляется ссылка на недавно опубликованные результаты тестов производительности.
- Участник под ником «dead» отмечен как неактивный.
Pasta/80 is a simple Pascal cross compiler targeting the Z80 microprocessor
Разработчик представил Pasta80 - компилятор, совместимый с Turbo Pascal 3.0, который генерирует машинный код для классических и современных компьютеров на базе процессора Z80. Проект поддерживает ZX Spectrum 48K/128K/Next и системы с CP/M, позволяя современным программистам создавать приложения для ретро-платформ. Код компилятора написан на C++ и открыт под лицензией MIT.
Особенность проекта заключается в том, что он не просто эмулирует старую среду, а создает полноценный компилятор, способный генерировать эффективный машинный код для оригинального железа. Это позволяет разрабатывать нативные приложения для ретро-компьютеров без необходимости использования эмуляторов или виртуальных машин. Проект уже поддерживает несколько ключевых платформ Z80-экосистемы и может быть расширен для работы с другими устройствами на этой архитектуре.
Комментарии (17)
- Обсуждение всплеснуло ностальгией по простым 8-битным процессорам и первым компиляторам, вспоминая, как трудно, но вдохновляюще было писать компиляторы для них.
- Участники делились личными историями о первых опытах с Pascal и C, отмечая, что ранние компиляторы были однопроходными и как это влияло на разработку.
- Всплеск воспоминаний привел к обсуждению того, как языки и компиляторы эволюционируют, и как это влияет на безопасность памяти и стабильность программ.
- Тонко подметили, что современные языки и инструменты, возможно, заставляют разработчиков быть менее внимательными к низкоуровневым деталям.
- В конце обсуждение свелось к тому, что хотя технологии и стали более сложными, но некоторые считают, что это может отдалить нас от основ и что важно сохранять хоть какое-то взаимодействие с этими основами, такими как архитектура Intel 8086 и идея однопроходной компиляции.
Fenster: Most minimal cross-platform GUI library
fenster — сверхкомпактная кроссплатформенная GUI-библиотека.
-
Особенности:
- Окно, пиксельный буфер, ввод с клавиатуры/мыши.
- Один
.hфайл, ~400 LOC, зависимости: X11 (Linux), Cocoa (macOS), Win32 (Windows). - Поддержка C/C++, Zig, Odin, Rust, Go, JS (WASM), C#, Swift, Pascal, Nim, Lua, Python, Ruby, OCaml, Fortran.
-
Быстрый старт (C):
#define FENSTER_IMPL
#include "fenster.h"
int main() {
struct fenster f = {.width = 320, .height = 240, .title = "demo"};
uint32_t buf[320*240];
for (fenster_open(&f); fenster_loop(&f) == 0; ) {
// рисуем
fenster_sync(&f, buf);
}
return 0;
}
-
Сборка:
cc demo.c -o demo(Linux:-lX11, macOS:-framework Cocoa, Windows: без флагов). -
API (C):
fenster_open,fenster_close,fenster_loop,fenster_sync.- Поля:
width,height,title,keys[64],mouse.
-
Лицензия: MIT.
Комментарии (31)
- Fenster — это минимальная C-библиотека, создающая окно с пиксельным буфером, а не полноценный GUI с кнопками и меню.
- Участники отмечают отсутствие скриншотов и просят добавить их в README.
- Название «Fenster» переводится как «окно» на немецком, африкаанс, шведском и других языках.
- Некоторые считают polling-цикл ошибкой, другие считают его допустимым для такой простой задачи.
- В блог-посте нашли опечатку в sizeof и ограничение кода 8-битными цветами.
- Проект вызывает интерес для визуализации данных и как лёгкая альтернатива raylib.
MS-DOS development resources
DOSDevelResources — подборка инструментов и ссылок для разработки под DOS.
Содержание
-
Языки
- C/C++: Watcom, DJGPP, OpenWatcom, SmallerC, SubC
- Pascal: Free Pascal, Turbo Pascal 5.5
- BASIC: FreeBASIC, QB64, QuickBASIC 4.5
- Сборка: NASM, FASM, WASM, TASM, MASM 6.11
- Прочее: Rust (rustc-dos), Go (gccgo), Lua, Python 2.4
-
Библиотеки и API
- Allegro, SDL, Raylib, GRX, pdcurses, OpenGL (Mesa3D), VESA, SoundBlaster, TCP/IP (Watt-32, mTCP)
-
Утилиты
- Редакторы: RHIDE, FTE, SETEdit, TDE, Vim, Emacs
- Отладчики: GDB, WD, TD, SoftICE
- Упаковка: UPX, LZEXE, PKLite, Diet
- Эмуляция: DOSBox, DOSBox-X, 86Box, PCem, Bochs
- Разное: Git, Make, Doxygen, Valgrind-like (Dr. Memory)
-
Документация
- Ralf Brown’s Interrupt List, PCGPE, Intel/AMD manuals, OSDev Wiki
-
Ссылки
Как пользоваться
Клонируйте репозиторий:
git clone https://github.com/SuperIlu/DOSDevelResources.git
Все файлы/архивы лежат в каталогах по темам.
Лицензия
MIT.
Комментарии (32)
- Участники вспомнили, что DOS-ретросцена жива: анонсирован 3-месячный DOSember game-jam.
- Перечислены доступные инструменты: HX DOS Extender, JWasm, Borland C++ 3.1, Free Pascal, DJGPP, GW-BASIC/PC-BASIC, а также MIT-лицензированный набор Microsoft 1988 года.
- Названы ключевые ресурсы: PC Games Programming Encyclopedia, эмулятор PCjs, книги «Black Book of Graphics Programming», «Programmer’s Guide to the EGA/VGA» и «PC-Intern».
- Отмечены удобные IDE: RHIDE и клон Turbo Vision от Free Pascal, а также ностальгия по быстрым Borland-IDE.
- Обсуждали, что современные ассемблеры (FASM/NASM) удобнее старых MASM/TASM, а DOS-цели можно собирать даже из Win32 PE.