Anton
к такому жизнь меня не готовила
Anton
ребят, а разве в расте не действует принцип - если скоплилилось то значит все норм?
Anton
Если это borrowed ошибка, разве она не в компайл тайме отслеживается?
Anonymous
можно компилить ансэйф
Anonymous
это считается за "все норм"?
ne_on
может оно валится из-за внешних факторов, ну там файл открыть/записать не смог или типа того
ne_on
или ты выиграл приз в игре - урони rust, кажется у них был такой конкурс
Alex
ребят, а разве в расте не действует принцип - если скоплилилось то значит все норм?
а ты не юзал какой нибудь типаж который выносит эту проверку в рантайм?
Anton
а ты не юзал какой нибудь типаж который выносит эту проверку в рантайм?
в душе не ебу, сделал вызов запроса на элемент в билдере
Anton
и все чот уронилось
Anton
можно компилить ансэйф
нету у меня ансейфов
Anton
сегодня делал интеграцию этого вашего fluent-rust
Anton
мальца заебался, но там мои ляпы были
Anton
щас вроде все топчик
Anton
осталось только узнать нахуя я его использовал?
Anton
(ладно просто потому что я ненавижу gettext файлы)
Safort
да видимо я очередной "победитель"
Запили им issue, вдруг это действительно баг япа.
Alex
рантаймовый борроу специально сделан для некоторых типов, нет?
Alex
или я чего то путаю?
Anton
возможно это глюк ffi бинда для gtk
Anton
вполне возможно
Anton
там гдето в кишках оболочки чтото замкнуло и ебнуло
Alex
так то не паника а сегфолт должен быть
Alexander
Rust не делает какую-то магию. Раст даёт программеру выбор какой инструмент использовать.
Alexander
Проверять всё статически не всегда возможно. Поэтому есть возможность что-то предпринимать в подобных ситуациях по ходу дела.
Alexander
Двойное одалживание в рантайме - это как раз та ситуация, в которой без всеохватывающих тестов очень тяжело.
Anton
Двойное одалживание в рантайме - это как раз та ситуация, в которой без всеохватывающих тестов очень тяжело.
слишком много неконтролируемого GUI говна поверх FFI чтобы это еще и тестировать
Anton
лучше сразу выпилится нахуй чем пытаться это сейчас тестить чтобы те 3 строчки что вызывали фаталку заработали
Alexander
"Разделяй и властвуй" ©
Alexander
Ну, по крайней мере какая-то часть задачи может быть решена легко.
ne_on
https://pypl.github.io/PYPL.html
պլհկ
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
На один тред несколько горутин
А uid вешается на поток?
big
https://github.com/golang/go/issues/1435 забавные результаты по запросу setuid threads
պլհկ
В linux да, но libc делает синхронизацию
big
я имею ввиду казалось то все просто
big
какую синхронизацию делает libc?
Kerrigan
Ну в го работают не так, как ожидаешь, например
в го из-за этого вырубили совсем
Kerrigan
с 1.4
Vlad
Линуксе же через жопу сделано. Поток - это процесс на самом деле...
big
так ну все разрыв шаблонов
Anton
в линухе тред тяжелый
Anton
и от форка отличается лишь шаред памятью
Vlad
В линухе можно шарить адресное пространство, файловые дескрипторы и все прочее между процессами (системный вызов clone). Поток - это такой процесс с которым все расшарено
Евгений
Линуксе же через жопу сделано. Поток - это процесс на самом деле...
А ты хочешь, чтобы операционная система имела раздельные шедулеры для потоков и процессов? Единство потоков и процессов очень крутая идея, потому что можно разграничивать степень "общности" разных процессов
big
ого! а набор дескрипторов напимер?
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
так! а чисто получается phtreads можно поверх libc/сырых syscall'ах сделать? Или есть специальные syscall'ы спецом для pthreads?
Этот сисколл (clone) только линуксовый же вроде. Нестандартный. По верх него стандартный pthreads работает
big
окей, я уточню: "реализация pthreads для linux'а"
Kerrigan
эликсир
после него