The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Релиз языка программирования Rust 1.6, развиваемого проектом Mozilla

22.01.2016 12:04

Состоялся релиз языка программирования Rust 1.6, развиваемого проектом Mozilla, обеспечивающего автоматическое управление памятью и предоставляющего средства для высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime. Параллельно с Rust совместно с компанией Samsung развивается экспериментальный браузерный движок Servo, написанный на языке Rust и отличающийся поддержкой многопоточного рендеринга web-страниц и распараллеливанием операций с DOM (Document Object Model).

Новый выпуск примечателен переводом libcore в разряд стабильных. Стандартная библиотека функций Rust базируется на базовой библиотеке libcore, которая не зависит от платформ и самодостаточна. Поверх libcore построена расширенная библиотека libstd, через которую доступны функции работы с памятью, вводом/выводом и многопоточностью. В обособленном виде libcore может применяться в низкоуровневых компонентах операционных систем и во встраиваемых платформах. Стабилизация данной библиотеки даёт возможность приступить к созданию низкоуровневых приложений, не опасаясь нарушений совместимости с будущими выпусками Rust. Кроме libcore в разряд стабильных также переведено около 30 расширенных библиотечных функций и методов libstd, таких как функции семейства drain() для работы с коллекциями, From для преобразования типов и Vec::extend_from_slice().

Язык Rust развивается проектом Mozilla и сфокусирован на безопасной работе с памятью и обеспечении высокого параллелизма выполнения заданий. При этом Rust обходится без использования сборщика мусора или runtime, что делает возможным создания на Rust библиотек, которые могут выступать в роли прозрачной замены библиотекам для языка Си. Для распространения библиотек на языке Rust, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo, позволяющий получить нужные для программы библиотеки в один клик. Для размещения библиотек введён в строй репозиторий crates.io.

По структуре язык Rust напоминает C++, но существенно отличается в некоторых деталях реализации синтаксиса и семантики. Автоматическое управление памятью избавляет разработчика от манипулирования указателями и защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Rust поддерживает смесь императивных процедурных и объектно-ориентированных методов с такими парадигмами, как функциональное программирование и модель акторов, а также обобщённое программирование и метапрограммирование, в статических и динамических стилях.

  1. Главная ссылка к новости (http://blog.rust-lang.org/2016...)
  2. OpenNews: Релиз языка программирования Rust 1.5, развиваемого проектом Mozilla
  3. OpenNews: На 2016 год запланировано задействование в Firefox кода на языке Rust и движка Servo
  4. OpenNews: Релиз языка программирования Rust 1.4, развиваемого проектом Mozilla
  5. OpenNews: Представлена операционная система Redox, написанная на языке Rust
  6. OpenNews: Увидел свет язык программирования Rust 1.0
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/43716-rust
Ключевые слова: rust
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (74) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, rshadow (ok), 14:32, 22/01/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –10 +/
    Мозилла в последнее время выкидывает все что не ФФ и не приносит бабло. Кода мозилла от него откажется?
     
     
  • 2.3, amonimous (?), 14:42, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +12 +/
    Дык в будущем этот их ФФ и будет на расте
     
     
  • 3.17, Lester (?), 16:03, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Возможно будет. Разработчики уже не говорят о ближайшей замене gecko на servo, речь идет о возможном постепенном внедрении частей на rust в gecko. А это, ИМХО, говорит о том, что они хотят зацепиться, чтоб их не забыли и не похоронили, если они не смогут в ближайшее время создать конкурентный аналог. Ну и кроме того, это говорит о том, что они явно недооценили сложность и объем задачи.
     
  • 3.28, pkdr (ok), 18:05, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Вряд ли, учитывая то, что сейчас делают мозилловцы, они проведут статистическое исследование, узнают что на фаерфоксе сидит только треть пользователей браузеров и решат прекратить его пилить вообще, выпустят FireChromium.
     
  • 2.64, D246ner (?), 20:04, 23/01/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Если не будет развивать его Mozilla, будут развивать его другие:
    В Dropbox пишут новые сервисы на rust, будет кому поддерживать.
    Создадут какую-нибудь Nonprofit Organization курирующую разработку, и существующую через взносы, и будут обеспечитвать ЗП разрабочикам языка.
     

  • 1.2, Аноним (-), 14:34, 22/01/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –7 +/
    Некрасивый он и плохо читаемый. Наверно на него пересядут Си-шники.
     
     
  • 2.5, Roo2AT7d (ok), 14:50, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Жрущим кактус не привыкать?
     
  • 2.9, Crazy Alex (ok), 15:11, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Для сишника там слишком много условностей и заморочек.
     

  • 1.4, index.php (?), 14:47, 22/01/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Когда же наконец запилят один самый мощный язык программирования в котором будет один синтаксис? Сейчас не очень удобно запоминать C++, C#, Python, Ruby, Rust, Go, Swift, Java :'(
     
     
  • 2.6, Наркоман (?), 14:53, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • –9 +/
    Swift чем не подходит?
     
     
  • 3.8, index.php (?), 15:02, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Нельзя делать сайты и клепать программы под Windows and Android или можно?
     
     
  • 4.43, броподрол (?), 22:57, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Сайтики уже можно. Windows and Android скоро будет, в баг треке уже баг есть ждите.
     
  • 2.7, Аноним (-), 15:01, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Пиши на Лиспе, в нем один синтаксис.
     
     
  • 3.10, Crazy Alex (ok), 15:12, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Точнее, в нём вообще толком синтаксиса нет. Тем и плох.
     
     
  • 4.14, rob pike (?), 15:50, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Тем и хорош.
    Односторонние медали встречаются нечасто.
     
     
  • 5.20, Crazy Alex (ok), 16:37, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Ну да. Но лисп для мейнстрима банально неудобен. Впрочем, как любое универсальное решение.
     
     
  • 6.26, rob pike (?), 17:50, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +4 +/
    И каждый из прочитавших этот комментарий под словом "мейнстрим" понял что-то свое.
     
     
  • 7.48, Crazy Alex (ok), 02:06, 23/01/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Характеристика мейнстрима только одна - его МНОГО. И это заведомо исключает любой язык, для которого нет орды готовых специалистов и готовых частных решений. Я даже поверю, что на лиспе можно что-то быстро разработать - но на мейнстримных языках, скорее всего, это вообще не придётся разрабатывать - всё давно готово и есть те, кто умеет с этим работать - и в количествах.
     
     
  • 8.51, angra (ok), 02:22, 23/01/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну а теперь задумайся, откуда появляются орды готовых специалистов и готовых ча... текст свёрнут, показать
     
     
  • 9.66, Crazy Alex (ok), 04:55, 24/01/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это как раз легко объяснить 1 на языке простое делается просто, а дальше - ка... текст свёрнут, показать
     
  • 8.53, rob pike (?), 02:31, 23/01/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А этого МНОГО - его одним куском много, или оно из множества небольших и разных ... текст свёрнут, показать
     
     
  • 9.67, Crazy Alex (ok), 05:07, 24/01/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    За цифирками - к TIOBE или на сайты вакансий, но как бы очевидно, что сейчас всё... текст свёрнут, показать
     
  • 4.15, freehck (ok), 15:51, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Зато на нём можно легко и непринуждённо быстренько зафигачить себе DSL специально под нужную тебе задачу с нужным тебе синтаксисом. :)
     
     
  • 5.18, Crazy Alex (ok), 16:25, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Можно. Но этот DSL будет весьма слабо читаем.

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

     
     
  • 6.30, freehck (ok), 19:00, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Можно. Но этот DSL будет весьма слабо читаем.

    Это уже зависит от Вас, и только от Вас.

    > А вот на любом современном интерпретируемом языке это, скорее всего, будет проще,
    > быстрее и результат будет куда удобнее в использовании.

    Нет. Просто нет. Без лисповых макросов *проще* и *быстрее* это точно не будет.

    Вот давеча понадобился DSL для одной программки на Ocaml, так оказалось проще встроить в него R5RS, чем писать на синтаксический анализатор на нём самом. Но Ocaml, конечно, не "современный интерпретируемый". Однако как написать такое на Perl, Ruby или Lua я даже не представляю.

    > А если взять специализированный язык, которых сейчас хватает для любой области и на любой
    > вкус - результат будет ещё лучше.

    Ну во-первых их вечно НЕ хватает. Во-вторых, как они по-вашему появляются-то?

     
     
  • 7.40, QuAzI (ok), 22:02, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +/
    А сопровождать этот код потом будет полтора магиканца на пенсии? Где-то мы про такое недавно читали =)
    FORTRAN учите, будете вообще неувольяемым =)
     
  • 7.49, Crazy Alex (ok), 02:17, 23/01/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    А дайте задачу - уверен, что найдётся пяток готовых решений для чего-то мейнстримного и по столько же модулей на питоне/перле, которые можно по-быстрому прикрутить.

    Как появляются - не важно (хотя большинство распространённого написано отнюдь не на лиспе). Важно то, что для абсолютного большинства задач они уже есть, причём в них уже собраны основные грабли и есть союзники в борьбе с оставшимися.

    Ну вот есть разница между 80-ми, когда связность была плохой, набор готовых решений - сравнительно малым, сложность задач - терпимой, а набранный индустрией опыт - не таким уж большим, и нынешним временем, когда всё это увеличилось многократно.

    Ну не пишет себе сейчас нормальный человек набор контейнеров, виджетов и алгоритмов. Сейчас есть прямой смысл конентрирооваться на одной задаче, а всё остальное брать готовым, и быстро оценить то, что тебе интернетом принесло - гораздо более ценный навык, чем что-то на порядок проще написать самому вне какой-то узкой области. Потому что в первом случае есть шанс хоть что-то за свою жизнь успеть.

    Ровно так же, как веке в 17-м можно было заниматься физикой в одиночку и получать хорошие результаты в нескольких областях - а сейчас одиночка не может добиться вообще ничего, и единственный осмысленный вариант - узкая специализация и максимальное использование результатов коллег со всего мира.

     
     
  • 8.54, rob pike (?), 03:21, 23/01/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Вот вы сами построили strawmanа, и сами его успешно забороли с усердием, достойн... текст свёрнут, показать
     
     
  • 9.68, Crazy Alex (ok), 05:22, 24/01/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Потому что мне тут в сотый раз начали рассказывать о том, как лисп хорош для быс... текст свёрнут, показать
     
     
  • 10.71, freehck (ok), 15:15, 24/01/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Ну что ж, я могу Вам только посочувствовать, что Вам 100 раз объясняют столь про... большой текст свёрнут, показать
     
     
  • 11.72, Michael Shigorin (ok), 21:20, 24/01/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще-то такого не прочёл -- скорее неважно, потому что не требовалось требует... текст свёрнут, показать
     
  • 6.37, . (?), 21:49, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >А если взять специализированный язык, которых сейчас хватает для любой области и на любой вкус - результат будет ещё лучше.

    Ну тЭорЭтически - вот их то лишперы и делают :)

     
  • 6.62, Онаний Онаниевич (?), 15:41, 23/01/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Это Вы про JavaScript, Python и PHP чтоли? Более мусорных языков я в жизни не видел (bash не в счёт).
     
     
  • 7.69, Crazy Alex (ok), 05:24, 24/01/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Из этих - питон как DSL выглядит очень чистенько - определешь нужную библиотеку  -  и всё. Lua для того же часто используют.
     
  • 3.11, Аноним (-), 15:13, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +/
    ... и всё. Только, #%$^, синтаксис, тебе этого должно хватить.
     
  • 2.12, Аноним (-), 15:14, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Да тебе нужен 1С! Там всё понятно.
     
     
  • 3.13, index.php (?), 15:17, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    МНЕ НУЖЕН УНИВЕРСАЛЬНЫЙ ЯЗЫК, а не 1C
     
     
  • 4.21, Аноним (-), 16:42, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +/
    это была ирония же
     
  • 4.23, омномномнимус (?), 17:16, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    PL/1
     
     
  • 5.38, . (?), 21:50, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > PL/1

    Ха! Надо же чего вспомнили! :)

     
  • 4.44, svicer (ok), 23:02, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Мамина сиська, это универсальный язык для вас?
     
  • 2.16, жабабыдлокодер (ok), 16:02, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Brainfuck же!
     
  • 2.19, iLex (?), 16:29, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Когда-то давно на роль такого языка претендовал C++. Всего каких-то 17 лет назад можно было выучить только его, и получить возможность писать код под любое железо того времени и под любую задачу.
    А потом предметная область начала фрагментироваться, причём скорость фрагментирования всё возрастает. Кажется, в мире IT пресловутая сингулярность наступит с года на год, потому как уже сейчас языки, фреймворки и парадигмы плодятся с такой чудовищной скоростью, что даже если начинать учить их сразу после выхода, к моменту изучения они как раз успевают устареть.
    Всё идёт к подходу "один проект - один язык", когда количество действующих языков сравняется с числом крупных проектов. И знания, полученные в одном проекте, для любого другого будут полностью бесполезными, т.к. станет практически невозможно найти два проекта, написанных на одном языке.
     
     
  • 3.22, Aleksey (??), 16:45, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Это всё hype, его можно спокойно игнорировать, базовые знания по computer science уже годов с 70ых как не устаревают.
     
     
  • 4.24, Andrey Mitrofanov (?), 17:30, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Это всё hype, его можно спокойно игнорировать, базовые знания по computer science
    > уже годов с 70ых как не устаревают.

    Ога, небазовые вперемешку с не-знаниями переполняют аналы.

     
  • 4.27, rob pike (?), 17:56, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Начните с бенчмаркинга на Haswell классических структур данных и алгоритмов.


     
     
  • 5.33, Michael Shigorin (ok), 21:01, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Начните с бенчмаркинга на Haswell классических структур данных и алгоритмов.

    А что там?

     
     
  • 6.47, rob pike (?), 01:02, 23/01/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну, например, можно обнаружить как хитрые списки, над которыми бились лучшие умы в computer science 1970-х, со своими O(1), сливают тупейшим массивам с их позорными O(N) на примерно всех разумных N.
    Кнутов с Седжвиками и Корменами формально и не упрекнешь, они скажут что ничего конкретного про сами эти О и не обещали, и вообще это такие математические абстракции, к реальной жизни никак не относящиеся, а что все понаделали себе в головах интуциций про эти O - так это к понаделавшим. Тем не менее, контринтуитивным в реальной жизни для подавляющего большинства овладевших "принципами computer science из 1970-х" оно остается.
    А реально влияющие (побольше чем N) вещи типа branch prediction, reference locality, cache awareness в computer science 1970-х описаны, как бы это помягче выразиться, не очень (хотя у IBM был работающий в IBM360 out-of-order еще до 1970-х).
     
     
  • 7.50, Crazy Alex (ok), 02:22, 23/01/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А детальнее где глянуть? Что-то на практике я об такое не бился, ни на C, ни на плюсах. ни на перле, ни на джаваскрипте. Хотя оптимизировать всякое приходилось.
     
     
  • 8.55, rob pike (?), 04:42, 23/01/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А начните вот с Мейерса http www aristeia com TalkNotes ACCU2011_CPUCaches pdf... текст свёрнут, показать
     
  • 7.58, Michael Shigorin (ok), 13:43, 23/01/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну, например, можно обнаружить как хитрые списки, над которыми бились лучшие умы
    > в computer science 1970-х, со своими O(1), сливают тупейшим массивам с
    > их позорными O(N) на примерно всех разумных N.

    О как, не слышал.

     
  • 4.46, й (?), 00:07, 23/01/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    да-да, особенно представления о многопоточных программах.
     
  • 3.25, Аноним (-), 17:31, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Всего каких-то 17 лет назад можно было выучить только его, и получить возможность писать код под любое железо того времени и под любую задачу.

    Сильно подозреваю, что 17 лет назад или ваши задачи были несколько специфичными или же это вообще рассуждения с высоты удобного дивана ) ), типа "главное – возможность! А результат ... ну подумаешь, придется переписать кусок на Си ..."

    https://lkml.org/lkml/2004/1/20/20

     
     
  • 4.52, Crazy Alex (ok), 02:29, 23/01/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Насчёт c++ exceptions - он, как обычно, ничего не уточнил, так что не понять, насколько он прав.

    Уж не знаю, что у него за требования к языку для писания ядра, но вот насчёт "hide things like memory allocations behind your back" - он либо гонит, либо имеет в виду что-то большее, чем аллоцирование в куче.

    А вот за "object-oriented code in c without c++ crap" я очень хочу кого-то убить. Эта хрень адски плохо отлаживаается и ещё хуже модифицируется, так как единственный способ сделать ООП на сях (я имею в виду - как положено, с наследованием и полиморфизмом) - куча макросов, от которой тошнит, и не меньшая куча опасных преобразований типов.

     
     
  • 5.61, rob pike (?), 15:18, 23/01/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Если бы Линус делал "как положено", у нас бы сейчас вместо ядра были EJB с RMI-IIOP и феминистками.
    Так что спасибо ему огромное за то что он руководствуется здравым смыслом и плевать хотел на весь тот crap, который "положен",
     
  • 3.32, Michael Shigorin (ok), 21:00, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > и под любую задачу

    Чё-то не помню я тогда нашествия плюсатых cgi-шек (спрашивали ведь и "за сайты")...

     
     
  • 4.45, rob pike (?), 23:30, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    mod_perl вовремя появился. Сишные модули к апачу писали иногда, если надо было совсем быстро. Но редко, перл не сильно уступал в работе со строками, а ничего другого в вебе было не надо практически никогда.

    Хотя базовое утверждение автора, конечно, полная чушь. 17 лет назад на одних FoxPro, Clarion, Paradox и Clipper было понаписано больше кода чем на Си и С++, с большим отрывом.

     
  • 2.70, ПолковникВасечкин (?), 10:55, 24/01/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Давно запилили
    https://ru.m.wikipedia.org/wiki/ДРАКОН
     

  • 1.29, Аноним (-), 18:33, 22/01/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Согласно тому что они обещают нет сборщика мусора и нет ручного освобождения памяти. Я правильно понял?
    Тогда может ли раст решить задачу и как:
    Есть несколько массивов. В начале каждый из них имеет равный размер и содержит указатель(? или как там его называть) на объект. Потом некоторые элементы удаляются. Таким образом на некоторые объекты не остаётся ссылок ни в одном массиве и их надо удалить. Тут если не сборщик мусора, то перед удалением каждого объекта надо просматривать остальные массивы и проверять содержится ли в них указатель и если не содержится то удалять объект. Это единственный вариант который сразу приходит в голову. Но он крайне не эффективен при больших размерах массива и большом количестве массивов.
     
     
  • 2.31, Аноним (-), 19:45, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Первый курс?
     
     
  • 3.34, Аноним (-), 21:10, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Чего первый курс? Вот почему когда задаёшь вопрос, то ответить не могут, упрекнуть в некомпетентности могут, минусовать могут?
     
     
  • 4.39, Аноним Аналитег (?), 21:54, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Что ты там написал в первом сообщении вообще не понятно. В основной массе языков без GC используется подсчет ссылок, получаешь ссылку инкрементишь счетчик, как только выходишь из области видимости (scope) происходит декримент счетчика и если он 0 то объект удаляется. Как это работает когда ссылка должна быть передана за scope я не знаю, это все можно нагуглить словами rust memory model scope escape analysis.
    У счетчиков есть проблема с циклическими ссылками, когда есть два, три или более объектов ссылающихся друг на друга (A->B->C->A), ничего не знаю про руст, но недавно прочел про swift, в нем можно декларировать слабые ссылки, кейворды я тебе накидал, гугли тему.
     
  • 2.35, Анонимус2 (?), 21:40, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Как раз сборщик мусора решает эту задачу почти как вы описали, т.е. неэффективно. А без сборщика это решается элементарными счетчиками
     
     
  • 3.36, Аноним (-), 21:47, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Есть умный указатель. У него есть указатель и счётчик. Как только мы делаем a = b количество ссылок на a уменьшается, на b растёт. Как только количество ссылок станет равно 0 вызывается деструктор для объекта на который указывает указатель. По сути это и есть сборщик мусора. Который за одно и является счётчиком встречаемости объекта.
     
     
  • 4.41, Аноним Аналитег (?), 22:25, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > По сути это и есть сборщик

    Если бы это был сборщик мусора... подсчет ссылок использовался для управления памятью в больших приложениях с незапамятных времен. Просто когда у тебя один объект используется в трех разных местах, то без подсчета тяжело понять когда этот объект можно удалять. Но есть там проблемы с циклическими ссылками как я описал выше.
    У GC проблема с вынужденными stop-the-world паузами потому никакого real-time на java не пишут и расход памяти. Зато jre решена проблема с фрагментацией памяти и создание нового объекта обходится вроде бы дешевле, за счет того, что памяти у системы ненужно запрашивать, т.к. CG уже запросил с запасом. Хотя и для "С" это не проблема, можно использовать для менеджмента памяти костыли от апача с бассейном и ведрами :)

     
     
  • 5.73, freehck (ok), 21:22, 26/01/2016 [^] [^^] [^^^] [ответить]  
  • +/
    А как, кстати, производится управление счётчиком "умного указателя" при многопоточной работе? Лочится на время присваивания?
     
     
  • 6.74, Аноним Аналитег (?), 23:34, 27/01/2016 [^] [^^] [^^^] [ответить]  
  • +/
    У меня нет достаточной компетенции для ответа на вопрос, я джава кодер, максимум доводилось заниматься портированием сишных приложений на джаву.
     
  • 2.42, Аноним (-), 22:40, 22/01/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Таким образом на некоторые объекты не остаётся ссылок ни
    > в одном массиве и их надо удалить.

    И в чем, интересно, здесь будет профит от ручного освобождения памяти?
    А так:
    https://doc.rust-lang.org/stable/nomicon/destructors.html
    https://doc.rust-lang.org/std/rc/

     
  • 2.56, angra (ok), 06:20, 23/01/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Массивы(есть еще tuple и vec) в rust иммутабельны. Так что такая "задача" там просто не возникнет. Также там есть несколько разных типов указателей, есть понятия ownership и lifetime, так что методы работы с ними весьма отличаются от привычных по С.
     
  • 2.57, Аноним (-), 07:52, 23/01/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    в описанной ситуации rust позволит использовать только указатели с подсчетом ссылок (Rc или Arc). Попытка изменить объект при наличии указателей других типов приведет к ошибке компиляции
     

  • 1.59, 321 (??), 13:47, 23/01/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >Rust библиотек, которые могут выступать в роли
    >прозрачной замены библиотекам для языка Си.

    ну, вот и хорошо. перепишите Линукс (ядро) уже на нём.

     
     
  • 2.63, free_net_user (?), 15:52, 23/01/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Тут правда не линукс:
    https://github.com/thepowersgang/rust-barebones-kernel
    https://github.com/redox-os/redox
     

  • 1.60, free_net_user (?), 15:12, 23/01/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Рекомендую прочитать статью сотрудника Microsoft который вместе с Anders Hejlsberg работал над TypeScript:

    http://www.jonathanturner.org/2016/01/rust-and-blub-paradox.html

    Особо интересно узнать мнение бывалых C++ ков.

     
     
  • 2.65, Аноним Аналитег (?), 22:30, 23/01/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    +1 Отличная статья. Вопрос можно обобщить s/мнение бывалых C++ ков/мнение бывалых Blub программеров/g :)
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру