Реализация утилиты cat на языке C

Когда я только начинала изучать язык C, меня довольно сильно пугала его "топорность" по сравнению с другими языками. Все довольно строгое, управляемое вручную, но именно этим он и привлек меня. Потому что ощущение, будто ты напрямую разговариваешь с системой. В какой-то момент в моем поле появилась задачка: написать две утилиты линуксоидного существа cat и grep. Несмотря на то, что они кажутся довольно простыми, они оказались отличной возможностью погрузиться в работу с файлами, и понять, даже поверхностно, как работает язык C и с чем его едят. В статье постараюсь рассказать и показать ход своих мыслей и почему теперь я смотрю на консольные команды совсем иначе. В этой статье я подробно остановлюсь только на реализации утилиты cat. Что за зверь этот Cat Cat показалась мне более простой в написании, чем grep, да и частично grep строится на базе cat – тоже читает данные из файла, тоже работает со строками, но с небольшим нюансом в виде фильтрации. Что нам важно понимать на старте?

https://habr.com/ru/articles/939382/

#cat #утилита #clang #clangformat #linux #linuxутилита #утилиты

Реализация утилиты cat на языке C

Когда я только начинала изучать язык C, меня довольно сильно пугала его "топорность" по сравнению с другими языками. Все довольно строгое, управляемое вручную, но именно этим он и привлек меня. Потому...

Хабр

Hey y'all! There is a new #MetaCG release. \o/

After some significant refactoring, an evolved file format (now version 4) and some smaller increments, we felt that this is a good point for v0.9.0.

This has breaking changes again and is a good step forward.
Thanks to everyone who contributed.

Go check it out at https://github.com/tudasc/MetaCG/releases/tag/v0.9.0

#Software #LLVM #Clang #HPC #ProgamAnalysis

After writing so much software in C# and TypeScript during the past years, I felt a bit burned out.

- Decided I need a little "OOP detox"
- Dived a little into Rust for a while
- Result: great language, but did not fully click in some aspects

So now I am doing the only sensible thing:

Getting back into C. 😄

#C #Clang #oopDetox #CProgramming #Handmade

[Перевод] Визуализатор сборок в режиме реального времени

Под катом – анимация, демонстрирующая сборку приложения для macOS в режиме реального времени: Я расскажу, как она получилась, но для начала обрисую контекст этого проекта. Компиляция конкретного софта может быть очень длительной просто потому, что в этой программе очень много кода — как, например, в проекте LLVM. Но бывает и так, что сборка идёт медленно по глупым и вполне устранимым причинам. Подозреваю, что большинство сборок просто тормозят из-за ерунды, но проверить это мне пока не удавалось. Поэтому я разработал кроссплатформенный инструмент для визуализации сборок (пока он существует в приватной бета-версии, ссылка в конце статьи). Он работает с любой системой сборки и с любым языком программирования (а не только C/C++/Rust).

https://habr.com/ru/articles/937972/

#clang #компиляторы #сборка #программирование #скрипты #непрерывная_интеграция

Визуализатор сборок в режиме реального времени

Под катом – анимация, демонстрирующая сборку приложения для macOS в режиме реального времени: Я расскажу, как она получилась, но для начала обрисую контекст этого проекта. Компиляция конкретного софта...

Хабр

Caught by a dangling `else`. An hour or more of debugging spent on this... :)

Wikipedia: "The C standard clarifies that an else block is associated with the nearest if."
https://en.wikipedia.org/wiki/Dangling_else
Writing without curly braces can look neat, but watch out for this!

#C #CLang #C_lang #programming

Dangling else - Wikipedia

Question! Should I also free the string in the following code or nay. Cuz I’m already freeing the arena so I thought it wouldn’t be a big deal:

int main() {
arena = Arena_allocator(1024);

struct string* str = string_new("Hello, World!");
printf("%s\n", str->data);

Arena_deallocator(arena);
return 0;
}

string_new uses a allocator getting pointer from arena

#c #cprogramming #clang

Debugga kompilator och spelmotor
Assassin's Creed-motorn och Clang - en utmanande kombination. Tobias Hieta berättar hur han hittade en bugg i ett test och spårade den genom tusentals commits till en specifik ändring i Clang.
Ett utdrag ur Kodsnack 655 - lyssna där poddar finns eller på kodsnack.se
#podcast #compiler #compilers #llvm #clang #anvil #assassinsCreed #c++
Getting Started With Fuzz Testing in CLion | The CLion Blog

Learn how to perform fuzz testing with CI Fuzz in CLion, analyze the results, and debug a tested function.

The JetBrains Blog

JetBrains with its CLion IDE Is Now an Official ST Authorized Partner
#Clang #CLion #News #Embedded #Stlink #Stm32

https://blog.jetbrains.com/clion/2025/08/st-authorized-partner/

JetBrains with its CLion IDE Is Now an Official ST Authorized Partner | The CLion Blog

CLion is the recommended JetBrains IDE for embedded developers using STM32 32-bit Arm Cortex and STM8 8-bit microcontrollers.

The JetBrains Blog
×
Veckans Kodsnack är här: Tobias diskuterar en tillräckligt mystisk bugg han jagat ifatt, och berättar på vägen om register och vektorisering.
https://kodsnack.se/655/, och överallt där poddar finns. #podcast #llvm #clang #kompilator