Anton
к такому жизнь меня не готовила
Anton
ребят, а разве в расте не действует принцип - если скоплилилось то значит все норм?
Anton
Если это borrowed ошибка, разве она не в компайл тайме отслеживается?
Anonymous
можно компилить ансэйф
Anonymous
это считается за "все норм"?
ne_on
может оно валится из-за внешних факторов, ну там файл открыть/записать не смог или типа того
ne_on
или ты выиграл приз в игре - урони rust, кажется у них был такой конкурс
Alex
Anton
Anton
и все чот уронилось
Anton
Anton
Anton
сегодня делал интеграцию этого вашего fluent-rust
Anton
мальца заебался, но там мои ляпы были
Anton
щас вроде все топчик
Anton
осталось только узнать нахуя я его использовал?
Anton
(ладно просто потому что я ненавижу gettext файлы)
Anton
Alex
рантаймовый борроу специально сделан для некоторых типов, нет?
Alex
или я чего то путаю?
Anton
возможно это глюк ffi бинда для gtk
Anton
вполне возможно
Anton
там гдето в кишках оболочки чтото замкнуло и ебнуло
Alex
так то не паника а сегфолт должен быть
Vlad
Alexander
Alexander
Rust не делает какую-то магию. Раст даёт программеру выбор какой инструмент использовать.
Alexander
Проверять всё статически не всегда возможно. Поэтому есть возможность что-то предпринимать в подобных ситуациях по ходу дела.
Alexander
Двойное одалживание в рантайме - это как раз та ситуация, в которой без всеохватывающих тестов очень тяжело.
Anton
Anton
лучше сразу выпилится нахуй чем пытаться это сейчас тестить чтобы те 3 строчки что вызывали фаталку заработали
Alexander
"Разделяй и властвуй" ©
Alexander
Ну, по крайней мере какая-то часть задачи может быть решена легко.
ne_on
https://pypl.github.io/PYPL.html
Anonymous
պլհկ
RefCell<T> uses Rust's lifetimes to implement 'dynamic borrowing', a process whereby one can claim temporary, exclusive, mutable access to the inner value. Borrows for RefCell<T>s are tracked 'at runtime', unlike Rust's native reference types which are entirely tracked statically, at compile time. Because RefCell<T> borrows are dynamic it is possible to attempt to borrow a value that is already mutably borrowed; when this happens it results in thread panic.
Сережа
чем паника отличается от сегфолта?
big
сегфолт — это же сигнал. AFAIK, Он ловиться, кидается управление в ядро и возможно передается управление в обработчик из приложения
паники они попроще. Насколько я понимаю они реализованы на манер С++ исключений.
Сережа
Ладно, я сам понял существенную разницу - сегфолт может и не случиться при неправилной работе с памятью, молча испортит что-то где-то. Паника гарантированно случится.
Anonymous
попробуй сделать панику в другом треде и попробуй сделать сегфолт в другом треде
big
во! кстати да
big
паники в Rust'е убивают тред
Vlad
Еще их перехватить можно, как исключение в C++
Vlad
Ну и паника разматывает стэк, дропая все объекты
Kerrigan
такс, у меня вопрос, в расте работают setuid/setgid?
big
хм, а почему бы им не работать?
պլհկ
Работают
big
պլհկ
big
имеет смысл
Vladimir
big
https://github.com/golang/go/issues/1435
забавные результаты по запросу setuid threads
պլհկ
В linux да, но libc делает синхронизацию
big
big
я имею ввиду казалось то все просто
big
какую синхронизацию делает libc?
Kerrigan
Kerrigan
с 1.4
Vlad
Линуксе же через жопу сделано. Поток - это процесс на самом деле...
big
так ну все разрыв шаблонов
big
Anton
в линухе тред тяжелый
Anton
и от форка отличается лишь шаред памятью
Vlad
В линухе можно шарить адресное пространство, файловые дескрипторы и все прочее между процессами (системный вызов clone). Поток - это такой процесс с которым все расшарено
big
ого! а набор дескрипторов напимер?
Anton
Anton
когда происходит форк- чил процес наследуется от парента и память становится CoW
Anton
при треде - память общая - но тред по сути отдельный проццес
Anton
сумбурно
Kerrigan
Anonymous
эликсир
Евгений
ого! а набор дескрипторов напимер?
https://linux.die.net/man/2/clone
CLONE_FILES (since Linux 2.0)If CLONE_FILES is set, the calling process and the child process share the same file descriptor table. Any file descriptor created by the calling process or by the child process is also valid in the other process. Similarly, if one of the processes closes a file descriptor, or changes its associated flags (using the fcntl(2) F_SETFD operation), the other process is also affected.
If CLONE_FILES is not set, the child process inherits a copy of all file descriptors opened in the calling process at the time of clone(). (The duplicated file descriptors in the child refer to the same open file descriptions (see open(2)) as the corresponding file descriptors in the calling process.) Subsequent operations that open or close file descriptors, or change file descriptor flags, performed by either the calling process or the child process do not affect the other process.
Anton
Ну собственно по этому все люди носятся с идее green threads / fibers и т.д.
big
так! а чисто получается phtreads можно поверх libc/сырых syscall'ах сделать? Или есть специальные syscall'ы спецом для pthreads?
Vlad
big
окей, я уточню: "реализация pthreads для linux'а"
Kerrigan