LINUX.ORG.RU

Избранные сообщения dataman

Fil-C — компилятор для языков C и C++, гарантирующий безопасную работу с памятью

 , , ,

Группа Разработка

Цель разработки компилятора – полная совместимость с синтаксисом языков Си и С++ при обеспечении полной безопасности работы с памятью. Заявляется, что для использования достаточно пересобрать существующий код, так уже компилируются и работают bzip2, zip, pcre и ncurses. С незначительными модификациями поддерживается сборка OpenSSH, OpenSSL, CPython, SQLite, Lua, Curl, Lynx, jpeg6b, zsh, xzutils и simdutf.

( читать дальше... )

>>> Подробности (opennet.ru)

Ygor
()

новости про C23

 ,

Как-то я пропустил эту статью от 28 февраля: https://thephd.dev/ever-closer-c23-improvements

Кратко о том что приняли нового в С23, и какие предложения отвергли. (в статье расписано более подробно)

Приняли:

  • N2935 Make false and true first-class language features
  • N2927 typeof
  • N2653 N2828 char8_t and Unicode Improvements!
  • N2900 Consistent, Warningless, and Intuitive Initialization with = {}
  • N2826 unreachable()
  • N2829 Make assert() macro user friendly for C and C++
  • N2432 N2841 K&R Function Declaration AND Definitions are 🪦
  • N2808 allow 16-bit ptrdiff_t again
  • N2778 Separating Variably-Modified Types from Variable Length Arrays
  • N2775 Literal Suffixes for _BitInt(N) types
  • N2701 @, $, and backtick are added to the source character set
  • N2764 [[_Noreturn]]
  • N2840 Make call_once mandatory

К сожалению часть предложений была отклонена от включения в С23:

  • N2896 #once and #once YOUR_GUARD_ID_HERE, to reduce include guard spam
  • N2895 N2892 defer, Lambdas
  • N2859 break break;, break continue;, break break continue;
  • N2917 constexpr

Также хочу скопировать из статьи пояснения по поводу defer и constexpr

defer, Lambdas, and similar were voted down, but still have consensus to proceed for a timeline beyond/after C23. I’ve personally volunteered to direct and maybe even steer the effort for Lambdas. defer might come along for the ride since it’s basically in the same vein when it comes to what variables are available for defer. Spoiler: we’re going to be pursuing barebones, simple defer that is block-scoped (to the nearest braces, or conditional/etc. if the braces are omitted). This is mostly to save us from making the same design mistake Go did, where they have a defer that may dynamically allocate (?! Jesus Christ!) or other complete nonsense.

other complete nonsense - ссылка на твит с таким текстом:

And this blocks

  for i := 0; i < 100000; i++ {
    mutex.Lock()
    defer mutex.Unlock()
    *counter += 1
  }

Is there anything in Go that is not broken?

constexpr - an extremely watered down version compared to C++ that is super simple and deliberately intended not to be much more than updated ways of handling constants in C - did not die. There is strong support to work on it, albeit it might not make C23. Which is perfectly okay, as long as it stays alive!

fsb4000
()

У журнала «Квант» открылся новый сайт

 , , , ,

У журнала «Квант» открылся новый сайт
Группа Open Source

У легендарного журнала «Квант» открылся новый сайт – там и свежий номер, и архив старых, созданных под руководством Андрея Колмогорова и других крупнейших математиков.

Сайт позволяет искать по автоматически распознанным изображениям представленных номеров журнала. Попробуйте на странице «Архив номеров» ввести интересующее вас словосочетание. В качестве примера: кубик Рубика. По клику на номер с жёлтым фоном открывается страница номера с подсвеченными найденными словами. А если вы школьником отправляли решения в «Задачник „Кванта“», то можете попробовать найти свою фамилию в списках читателей, приславших решения.

( читать дальше... )

>>> Журнал «Квант» (kvant.digital)

z0idator
()

Lua Shell

 , , ,

Контест этого топика: Леннарт теперь до эмуляторов терминала добрался (комментарий)

@EXL:

Лучше бы Lennart взялся за Bash.

@wandrien:

Там только выкинуть целиком. Я вот хочу попытаться для lua сделать обвязку для скриптинга уровня оболочки. Подобные либы на Lua есть, но качество и объем фич мне не нравится. Надо лучше. Тебе бы был интересен такой проект?


Итак, вот моя идея в общих чертах. Составные части, на которых основываться:

https://github.com/BanceDev/lush
Низкое качество сборочного скрипта. Вероятно, и кода тоже. Интересует идея в первую очередь.

https://github.com/mna/luashell
Ключевое, что нам нужно. Взять за основу. Но:

  • Нужны полнофункциональные средства перенаправления ввода-вывода, заменить эту часть API. Под капотом, вероятно. придётся делать полноценную обработку fork - настройка процесса - exec.
  • test() должен быть вменяемый, а не парсить строку по пробелам. Просто алиас для sh.cmd("test", ...).exec()
  • Форк процесса без exec в качестве элемента пайплайна на уровне API
  • Как расширение предыдущего - обёртка а ля sh.echo("text").

В качестве базового API взять https://25thandclement.com/~william/projects/lunix.html вместо https://github.com/luaposix/luaposix

Также рассмотреть для включения и/или как источник идей:


Общая идея:

  • Lua + lunix — получаем возможность писать на Луа «приложения как на Си под libc».
  • Сверху на это - форкнутый и допиленный luashell. Это ключевое.
  • Далее QoL вещи: lua-path, argparse, функции для парсинга и форматирвоания времени, функции для JSON.
  • Далее - разработать интерактивный режим для использования в качестве командной оболочки.

Продукт компилируется в статический бинарь с musl и/или cosmopolitan libc и получаем «вечный» shell. При этом весьма компактный.

wandrien
()

lexbor 2.5.0

 , , , ,

Группа Разработка

13 августа, после девяти месяцев разработки, состоялся выпуск 2.5.0 высокопроизводительной библиотеки lexbor, предназначенной для парсинга HTML 5 и CSS.

( читать дальше... )

>>> Подробности о версии на GitHub (github.com)

dataman
()

constixel.hpp

 , , , двумерная графика,

constixel.hpp – минималистичная (262K) С++20 constexpr-библиотека для рендеринга двумерной графики на основе палитр с возможностью вывода изображений в форматах Sixel, Kitty terminal graphics protocol и iTerm2 images protocol в эмуляторах терминала.

На скриншотах – вывод в WezTerm большинства примеров использования.

Основные возможности библиотеки:

  • Полностью constexpr. Весь рендеринг графики, включая генерацию Sixel, может происходить во время компиляции.
  • Никаких динамических выделений памяти. Буфер и очень немногие внутренние структуры данных могут быть глобальными статическими переменными.
  • Минималистичный интерфейс и реализация с единственным заголовочным файлом.
  • Буферы на основе 1-, 2-, 4- и 8-разрядных палитр для минимального использования памяти. Предоставляются разумные стандартные палитры. Также предусмотрены 24- и 32-битные буферы, если целью является что-то другое, а не Sixel.
  • Простые функции рисования fill_rect(), fill_round_rect(), draw_line(), fill_circle() и другие.
  • Рендеринг пропорционального текста, опционально с кернингом, с использованием предварительно отрендеренных текстур шрифтов в формате BMFont, генерируемых пользовательской версией fontbm. Репозиторий включает набор готовых шрифтов (с открытым исходным кодом), которые легко использовать. Поддерживается UTF-8.
  • Для уменьшения количества зависимостей предоставляется кодировщик PNG без сжатия.
  • Блиттинг необработанных 32-битных RGBA-буферов изображений в буфер на основе палитры (с дизерингом или без него). При необходимости возможна обратная конвертация в RGBA-буфер.
  • Различные другие простые операции с изображениями.

( читать дальше... )

dataman
()

Герб Саттер — отчёт о встрече по стандартам ISO C++ в июне 2025 года

 ,

https://herbsutter.com/2025/06/21/trip-report-june-2025-iso-c-standards-meeting-sofia-bulgaria/

Уникальная веха: «Совершенно новый язык»

Сегодняшний день знаменует собой поворотный момент в развитии C++: несколько минут назад комитет C++ проголосовал за включение первых семи (7) документов по рефлексии во время компиляции в C++26 под несколько продолжительных аплодисментов в зале. Я думаю, что Хана «Мисс Constexpr» Дусикова лучше всего описала влияние этой функции несколько дней назад, в своей спокойной бесстрастной манере… Когда ей сказали, что документ об рефлексии попадёт на субботнее голосование по принятию, она слегка пожала плечами и тихо сказала: «Совершенно новый язык».

Микрофон упал.

До сегодняшнего дня, возможно, самым значимым опросом за всю историю C++ был опрос в Торонто в июле 2007 года о принятии первого документа «constexpr» Бьярне Струструпа и Габриэля Дос Рейса в проект C++11. Оглядываясь назад, мы можем видеть, какой тектонический сдвиг начался для C++.


Даниэль Лемир (Daniel Lemire) попробовал:


Экспериментальный форк clang от Bloomberg с поддержкой P2996 («Reflection for C++26»):

Есть в godbolt.org.

dataman
()

Ещё парочка компиляторов C

 , chibicc, , slimcc,

Обнаружил в Alpine/edge.

https://github.com/fuhsnn/slimcc:

This is a fork of Rui Ueyama’s chibicc with fixes and improvements, including:

  • C99 features: VLA parameters, VLA de-allocation, K&R old-style functions.
  • C11 features: _Static_assert(), over-aligned locals, _Generic with qualifiers.
  • C23 features: constexpr, enum:T{}, #embed, auto type-inference, etc.
  • C2y features: labeled loop/switch, if/switch declaration
  • TS features: defer(enable with -fdefer-ts), VA_TAIL
  • GNU features: inline assembly, symbol attributes, cleanup, cons/destructor
  • Basic codegen optimizations: const folding, reg-alloc for temporaries, instruction selection.

https://kefir.protopopov.lv

This web page is dedicated to Kefir C compiler project, developed by Jevgenij Protopopov.

Work on the project has been going on and off since November 2020, and the main goal of this project is producing a reasonably standard-compliant, independent compiler for modern C language (currently targeting C17 standard) for x86_64-based systems following System-V AMD64 ABI. The project is is licensed under GNU GPLv3 terms for the compiler and 3-Clause BSD for compiler-specific include files (see below). More detailed description is available in the README, whereas this page focuses on providing a high-level overview of the project and its purpose.

Disclaimer: Kefir is experimental hobby project which is not meant for production purposes. No guarantees are being made for correctness, completeness, stability and fitness for any particular purpose.

dataman
()

Skribidi — шустрая библиотека рендеринга текста

 , , ,

Mikko Mononen пишет на Си библиотеку Skribidi:

Skribidi is nimble bidirectional text stack for building UIs.

Features

  • bidirectional text layout
  • bidirectional text editing
  • font collections with CSS inspired font selection
  • color emojis
  • line breaking
  • text attributes
    • size, weight, style, streatch, letter spacing, word spacing, line spacing, baseling align, horizontal aling)
  • icons
  • glyph, emoji and icon rasterization
    • color, SDF and alpha
  • render cache with image atlas for glyphs and icons
  • layout cache for immediate mode use
  • lean dependencies

Status
Skribidi just got started. There are bugs and the API is very likely to change.

dataman
()

Разработчики Gnome удалят из С++ лишние фичи

 , , ,

Группа Open Source

Как всем известно, язык программирования С++, пожалуй, самый большой по объему из ЯП. Даже программисты, которые пишут на нем десятки лет не могут похвастаться, что знают его полностью. В связи с чем комитет по стандартизации С++ принял нелегкое решение: чтобы язык оставался конкурентоспособным перед напирающими новыми ЯП, например rust, нужно удалить из него все легаси фичи, написаные непонятно какими гоблинами в мохнатые восьмидесятые. В этом помогут хорошо известные на этом форуме разработчики Gnome, которые в свое время удалили все лишние фичи из своей DE, тем самым сделав ее вне конкуренции. Они будут удалять все фичи, пока не удалят все «плюсы» и не дойдут до С, из которого и вылез C++, но на этом не остановятся, оставят от языка только минимальный C--.

( читать дальше... )

>>> Подробности (stroustrup.com)

goingUp
()

Обнаружены самые серьёзные на данный момент намёки на существование внеземной жизни

 , биомаркеры, внеземная жизнь

Астрономы обнаружили наиболее перспективные признаки возможного биосигнала за пределами Солнечной системы, хотя остаются осторожными

Используя данные с космического телескопа Джеймса Уэбба (JWST), астрономы под руководством Кембриджского университета обнаружили химические отпечатки диметилсульфида и/или диметилдисульфида в атмосфере экзопланеты K2-18b, которая вращается вокруг своей звезды в зоне обитаемости.

На Земле диметилсульфид и диметилдисульфид производятся только живыми организмами, в основном морским фитопланктоном. Хотя неизвестный химический процесс может быть источником этих молекул в атмосфере K2-18b, результаты являются наиболее сильным доказательством того, что жизнь может существовать на планете за пределами нашей Солнечной системы.

Наблюдения достигли уровня статистической значимости «три сигма», что означает, что вероятность случайного возникновения составляет 0.3%. Чтобы достичь принятой классификации научного открытия, наблюдения должны пересечь порог в пять сигма, что означает, что вероятность случайного возникновения будет ниже 0.00006%.

Исследователи утверждают, что от 16 до 24 часов последующих наблюдений с JWST могут помочь им достичь важного уровня значимости в пять сигма. Их результаты опубликованы в журнале The Astrophysical Journal Letters (DOI: 10.3847/2041-8213/adc1c8).

Важно отметить, что делать громкие заявления пока рано:

Важно, чтобы мы были глубоко скептичны к собственным результатам, потому что только проверяя и перепроверяя их, мы сможем достичь той точки, когда будем уверены в них. Так должна работать наука.

>>> Более подробная новость на английском

CrX
()

Какой диск взять SDD или HDD?

 ,

Я проверил, на моем netac nv7000 2tb начала повреждатся информация. Решил заменить этот диск. Я погуглил и увидел что в общем плюс-минус сводится к двум вариантам: Старая модель интеловского SATA SSD серверного(2Tb) с большим ресурсом неиспользованная со склада магазина или обычный новый HDD терабайт на 8. Бюджет 20 000- 30 000 рублей. Подскажите пожалуйста есть ли варианты лучше в пределах этого бюджета?

P.S. Использоватся будет для:

1)системы и программ( то есть весь /),

2)также там будут хранится словари для программы словаря, книжки для библиотеки(локальной с myrulib), и несколько сайтов в zim

vbcnthfkmnth123
()

100 Гб литературы для частотного анализа русского языка

Здравствуйте!
Взбрела мне тут в голову идея произвести по словный частотный анализ русского языка.
К счастью для этого имелся образ библиотеки Мошкова (4 Гб текстов).
Написал скрипт, который заносит информацию о частоте встреч пяти-словных фраз..
При этом оказалось, что ни одна пятисловная фраза вовсе не повторилась. Куда более интересный результат дал анализ 4-х словных фраз. 10 самых часто встречающихся 4-х словных выражений это:

1) В то время как
2) Дело в том что
3) Несмотря на то что
4) С тех пор как
5) В то же время
6) До тех пор пока
7) И в самом деле
8) До сих пор не
9) В том числе и
10) Одно и то же

Хе.. :-) Думаю такие результаты никого не удивили... В действительности, это самые общие выражения, которые могут применяться абсолютно во всех текстах самого разнообразного характера.

Однако, для получения более интересных результатов материала для анализа явно маловато. Слов, которые встретились в базе данных более 100 раз оказалось всего лишь 3362. Таким образом число встреч даже двусловных сочетаний не самых распространённых слов при таком раскладе в базе данных чаще всего окажется равным 1-2 штуки.
Надо проанализировать эдак раз в 100 поболее материала.

Вопрос в том где можно было бы набрать столько литературы на русском языке? И желательно в zip-архивах. Потому что 100 Гб мне явно не в жизни не выкачать.. А 10 Гб архивов мне кажется будет вполне достаточно..

>>> (Invalid URL, no host part!)

unDEFER
()

Как безопасно перенести /home на другой диск?

 , , ,

Прошлый раз от этого грохнулся гном, но мне было пох, т.к. система была свежая и всё равно поставил kde.

Вроде должно хватить загрузиться в режиме восстановления и там из-под рута смувить файлы на соседний диск, а потом сменить точку монтирования /home. Но хватит ли этого, например, стиму (он фс не запоминает)?

next_time
()

smartctl как его понимать?

 ,

Приветствую коллеги!

Хотелось бы понимать сколько данных уже было записано на SSD Disk, но понимание не приходит.

Есть Device Model: Netac SSD 128GB, Serial Number: AA20220921128G455025.

smartctl -a /dev/sda | grep 'Sector Size'
Sector Size:      512 bytes logical/physical

smartctl -A /dev/sda
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.10.82-std-def-alt1] (ALT Sisyphus 7.2-alt1)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 1
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x0032   100   100   050    Old_age   Always       -       0
  5 Reallocated_Sector_Ct   0x0032   100   100   050    Old_age   Always       -       0
  9 Power_On_Hours          0x0032   100   100   050    Old_age   Always       -       1923
 12 Power_Cycle_Count       0x0032   100   100   050    Old_age   Always       -       15
160 Unknown_Attribute       0x0032   100   100   050    Old_age   Always       -       0
161 Unknown_Attribute       0x0033   100   100   050    Pre-fail  Always       -       100
163 Unknown_Attribute       0x0032   100   100   050    Old_age   Always       -       13
164 Unknown_Attribute       0x0032   100   100   050    Old_age   Always       -       844471
165 Unknown_Attribute       0x0032   100   100   050    Old_age   Always       -       1991
166 Unknown_Attribute       0x0032   100   100   050    Old_age   Always       -       1890
167 Unknown_Attribute       0x0032   100   100   050    Old_age   Always       -       1923
168 Unknown_Attribute       0x0032   100   100   050    Old_age   Always       -       5050
169 Unknown_Attribute       0x0032   100   100   050    Old_age   Always       -       62
175 Program_Fail_Count_Chip 0x0032   100   100   050    Old_age   Always       -       0
176 Erase_Fail_Count_Chip   0x0032   100   100   050    Old_age   Always       -       0
177 Wear_Leveling_Count     0x0032   100   100   050    Old_age   Always       -       0
178 Used_Rsvd_Blk_Cnt_Chip  0x0032   100   100   050    Old_age   Always       -       0
181 Program_Fail_Cnt_Total  0x0032   100   100   050    Old_age   Always       -       0
182 Erase_Fail_Count_Total  0x0032   100   100   050    Old_age   Always       -       0
192 Power-Off_Retract_Count 0x0032   100   100   050    Old_age   Always       -       13
194 Temperature_Celsius     0x0022   100   100   050    Old_age   Always       -       54
195 Hardware_ECC_Recovered  0x0032   100   100   050    Old_age   Always       -       0
196 Reallocated_Event_Count 0x0032   100   100   050    Old_age   Always       -       0
197 Current_Pending_Sector  0x0032   100   100   050    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0032   100   100   050    Old_age   Always       -       0
199 UDMA_CRC_Error_Count    0x0032   100   100   050    Old_age   Always       -       0
232 Available_Reservd_Space 0x0032   100   100   050    Old_age   Always       -       100
241 Total_LBAs_Written      0x0030   100   100   050    Old_age   Offline      -       5228137
242 Total_LBAs_Read         0x0030   100   100   050    Old_age   Offline      -       561
245 Unknown_Attribute       0x0032   100   100   050    Old_age   Always       -       7002196

Залез на https://www.virten.net/2016/12/ssd-total-bytes-written-calculator/ ресурс, который, якобы переводит LBA в удобоваримые значения и что я там вижу? А вижу я, что на диск было всего записано 2Gb!

Не плохо, правда?

Свежо питание, да серится с трудом. Дело в том, что этот несчастный Netac жестко убивался в течении более чем 2х месяцев постоянной перезаписью

while true; do
dd if=/dev/random of=/root/fordel.bak bs=4M
rm -fr /root/fordel.bak
done

Примерное число записанных блоков (1 блок около 100Gb) около 8000. Т.е. ну ни как не 2Gb.

Тогда полез эксперементировать и подбирать размер записи, что бы Total_LBAs_Written изменился на 1. И примерно такой размер удалось вычислить!

dd if=/dev/zero of=/fordel.bak bs=32M count=1

Т.е. после записи блока 32Mb Total_LBAs_Written возрастает на 1. Вот это уже более похоже на правду.

echo "$((5228137 * 32 /1024/1024))"
159

Примерно 159Tb. Ресурс превзойден всего в 2 раза. Диск стал ощутимо тормозить.

Но, собственно, вопрос в следующем: где подчерпнуть нужные данные для понимания сколько всего данных было записано на диск?

HighMan
()

Celestia и четыре планеты

 , , , ,

В тендере на лучший тест новой возможности загрузки нескольких изображений, победила астрономия. :)
Celestia из репозитория, скомпилирована с Qt 6.

dataman
()

Bforartists 4.3

 , , , ,

Группа Open Source

Состоялся выпуск 4.3 малопопулярной (580 ☆ на GitHub) программы Bforartists – значительно модифицированного форка Blender.

( читать дальше... )

>>> Подробности выпуска 4.3 (bforartists.de)

dataman
()

Шрифты Iosevka 28.0.0

 

https://github.com/be5invis/Iosevka/releases

Там столько изменений, что написать новость я не осилю. :)

dataman
()

Qlibs++ — header-only библиотеки для C++20

 , ,

Kris Jusiak создал проект Qlibs++ с header-only библиотеками для С++20, без сторонних зависимостей. Часть из них – облегчённые версии библиотек из boost-ext.

На данный момент есть:

Приятного чтения! :)

dataman
()

Ncdu 1.21 и 2.7

 , , , ,

Ncdu 1.21 и 2.7
Группа Open Source

19 ноября состоялись выпуски 1.21 и 2.7 утилиты ncdu (NCurses Disk Usage) для анализа использования диска с текстовым пользовательским интерфейсом.
Утилита написана на языках C (версия LTS) и Zig (версии 2.*) с использованием библиотеки ncurses и распространяется по лицензии MIT.
Zig-версия отличается добавлением многопоточного сканирования и новым двоичным форматом (со встроенным сжатием) экспорта результатов сканирования.

Список общих изменений:

  • развёртывание ~ и ~user в файле конфигурации;
  • исправлен импорт из JSON с экранированными суррогатными парами в формате UTF-16.

Список изменений в версии 1.21:

  • исправлены отображение и экспорт нулевых значений, когда расширенная информация недоступна;
  • исправлены экспорт и импорт JSON для флага «другая файловая система».

Список изменений в версии 2.7:

  • для компиляции по-прежнему требуется Zig 0.12 или 0.13;
  • добавлена поддержка прозрачного чтения и записи JSON, сжатого алгоритмом zstandard;
  • добавлены опции --compress и --export-block-size;
  • исправлено некорректное поле в корневом элементе при экспорте в двоичный формат;
  • добавлена опция сборки -Dstrip.

>>> Подробности (yorhel.nl)

dataman
()