Как настроить размер стека по умолчанию в Rust - PullRequest
1 голос
/ 10 апреля 2020

Я работал над графическим приложением winit в Rust на MacOS. Размер моего стека по умолчанию на основе компоновщика (ld) составляет 8 МБ.

Я хотел бы знать следующее:
1. Насколько распространен этот способ для графических приложений и т. Д. c. нужно увеличить размер стека по умолчанию на своих целевых системах? Должно ли быть разумным 8 МБ?
2. Я знаю, что в MacOS я не могу запустить это как дочерний поток, я думаю, что библиотека окон не поддерживает циклы событий дочерних потоков. Если разумно использовать больший размер стека, каков наилучший независимый от платформы способ его настройки в Rust? только способ, которым я получил проект для сборки, состоит в том, чтобы вызывать cargo rustc -- -C link-args=-Wl,-stack_size,0x100000000 после построения зависимостей. Если я создаю файл .cargo/config с указанным выше параметром, зависимости типа libc перестают говорить, что установка размера стека в качестве параметра компоновщика работает только для двоичных файлов.

Моя попытка .cargo/crate:

[build]
rustflags = ["-C", "link-args=-Wl,-stack_size,0x100000000"]

Получившаяся ошибка:

   Compiling libc v0.2.68
error: linking with `cc` failed: exit code: 1
  |
...
  = note: ld: -stack_size option can only be used when linking a main executable
          clang: error: linker command failed with exit code 1 (use -v to see invocation)
...