1.83K subscribers
3.23K photos
127 videos
15 files
3.52K links
Блог со звёздочкой.

Много репостов, немножко программирования.

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
#prog #c

http://cdecl.org

Трансляция из английского в декларации на C и обратно
😁4👍2🤡1
#prog #c #rust #article

Porting libyaml to Safe Rust: Some Thoughts

Или о том, как автор перевёл libyaml, сконвертированный c2rust, в идиоматичный Rust-код. Почему? Этот код используется как бекенд для serde-yaml и при этом существующий интерфейс поверх не давал информацию о положении частей входа вне ошибок.

The result is not just safer and easier, it is also just as performant

Автор также более подробно рассказывает о тонкостях реализации на C и о том, как они изменились с переходом на Rust.
👍7
#prog #c #article

Why Not Just Do Simple C++ RAII in C?

В последнее время есть предложения для того, чтобы добавить в C defer. Разумеется, эта конструкция избыточна, если в языке есть RAII. Статья показывает, почему "просто добавить RAII в C" не сработает.
👍1
#prog #c #abnormalprogramming

Как сказал один из комментаторов: "Finally, Duff's undevice"
😁4🤝1
#prog #c #shell #menacingopensource

🥜 Pnut: A Self-Compiling C Transpiler Targeting Human-Readable POSIX Shell

int sum(int* a, int len) {
int i, sum = 0;
for (i = 0; i < len; i += 1) {
sum += a[i];
}
return sum;
}

⬇️

#!/bin/sh
set -e -u

: $((sum = i = len = a = 0))
_sum() { let a $2; let len $3
let i; let sum
sum=0
i=0
while [ $i -lt $len ] ; do
: $((sum += _$((a + i))))
: $((i += 1))
done
: $(($1 = sum))
endlet $1 sum i len a
}

# Runtime library
# Local variables
__=0
__SP=0
let() { # $1: variable name, $2: value (optional)
: $((__SP += 1)) $((__$__SP=$1)) # Push
: $(($1=${2-0})) # Init
}
endlet() { # $1: return variable
# $2...: function local variables
__ret=$1 # Don't overwrite return value
: $((__tmp = $__ret))
while [ $# -ge 2 ]; do
: $(($2 = __$__SP)) $((__SP -= 1)); # Pop
shift;
done
: $(($__ret=__tmp)) # Restore return value
}
🤯14😁1
🤮1
#prog #rust #c #meme про трактор
🔥21😁18👍4
😁42🙏32👍1
Yet another senior pomidor (by @gmelikov)
Интересный кейс подъехал: есть полезный сисколл copy_file_range, и если файловая система позволила принять через него запрос на копирование байтов больше, чем помещается в 32-битное число, то всё остальное будет забито нулями. Если бы я хотел написать кликбейтный…
#prog #c

А баг произошёл из-за того, что возвращаемое значение типа long сохранили в переменную типа int. И это, кстати, вполне себе ошибка, которую современные компиляторы легко ловят.

Позорище (и авторам glibc, и дилетантам Керниганну и Ритчи)
👍14👎3🤡3🌚2😁1🤔1🖕1