LINUX.ORG.RU

Язык D включен в коллекцию компиляторов GNU (gcc 9)

 


3

7

GCC 9.1 будет первым стабильным релизом с поддержкой GDC.

Его выход ожидается приблизительно в конце первого квартала 2019 г.

Код для поддержки GDC включает библиотеку libphobos (D run-time library) и фреймворк для тестов D2.

Поддержка D потребовала внесения изменений в приблизительно 1 миллион строк кода.

>>> Подробности



Проверено: jollheef ()
Ответ на: комментарий от grem

Мне пофиг на биткоины, поэтому и на раст.
Но если это его основное применение, то всё очень плохо. Для него.

раст ценен как язык не дающий удалить массив за пределами границ памяти, что автоматически на уровне языка ликвидирует многие уязвимости

также в rust решена turing bus stop problem, что позволяет еще безопаснее эксплуатировать приложения на нем, поэтому за ним будущее

биткоины были как пример того, что в то, во что многие не верят, на самом деле и есть будущее человечества

rust_afari ()
Ответ на: комментарий от rust_afari

Я знаю, что это та самая halting problem. Где и как именно в Rust она решена?

в статическом анализаторе при компиляции

Я правильно понимаю - статический анализатор доказывает, что программа завершается?

иначе как по вашему там все работает?

Я думаю, что это не работает. И, как я слышал, система типов Rust позволяет написать программу, на которой компилятор никогда не завершится.

tailgunner ★★★★★ ()
Ответ на: комментарий от gag

простоте сборки компилятора
элементарной кросскомпиляции

Ещё один IZEN?

генерации быстрого нативного кода
быстрому gc

Быстрого по сравнению с чем? С питоном?

отсутствию зависимости от стандартных glibc

Это такая проблема?

высокой скорости компиляции

Сишка тоже быстро компилируется. Угадайте почему.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от glebiao

Между прочим, программу на D можно запускать именно как классический скрипт, с компиляцией на лету.

На Rust тоже. Но зачем?

да, если забыть про излишнюю многословность в криптостиле.
криптостиле

А по-русски? Ну и пример бы не помешал.

кто этого не обещает? только вот ЗИРО не выпадает и н евыпадает. печаль...

А по-русски? x2

вообще, удивительно. *костыль*, подсказка компилятору

Подсказка - это в плюсах. В Rust - это гарантия компилятора.

Вот это хорошо, да. Но какой ценой? Имхо, увеличения головной боли программиста и снижения скорости разработки.

С точностью до наоборот. Если прога собралась - значит всё ок. И не нужно пердолиться с санитайзерами как в сишке и её старшем брате (сестре?).

снижения скорости разработки

Некоторые пациенты не очищают память в сишке, ибо ОС почистит. «Зато выше скорость разработки.» Не равняйтесь на болезненных.

Посмотрим, какой подход лучше и какой компилятор покажет лучшие, в этом смысле, результаты.

Rust уже давно обогнал D. Откройте глаза.

реклама. Все этого хотят. D тоже обещает. Вопрос в цене.

Нет. Это гарантия языка.

Чем это лучше шаблонов D?

Тем, что это не шаблоны.

чем это отличается от того, что есть в D и вообще говоря, в C++ старше 14?

Тем, что работает сильно лучше чем в плюсах (хз что там в D).

Чем это отлично от существующих языков?

Тем, что существующие языки содержат GC, а значит нужны доп. пляски.

Чем это лучше выноса на уровень библиотеки (с возможностью расширения без исправлений в компиляторе)?

Вы точно понимаете что такое pattern matching?

Вывод: отличный, перспективный вариант для драйверов и особо ответственного кода.

Только вот драйвера на Rust никто не пишет. Люди пишут прикладной софт, который можно было бы писать на D, но он не взлетел.

способный занять нишу D

У D есть ниша? =)

Пилят люди, собаку съевшие на построении реальных, промышленных компиляторов и теории.

А Rust значит пилят обезьяны?

Подскажи аналогичный (по сумме свойств) вариант.

Я пол темы пытаюсь выбить у фанбоев D список его преимуществ перед Rust, а получаю лишь мутные ответы.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от tailgunner

Я правильно понимаю - статический анализатор доказывает, что программа завершается?

доказывает что не будет сегфолта из-за выхода массива за пределы памяти

Я думаю, что это не работает. И, как я слышал, система типов Rust позволяет написать программу, на которой компилятор никогда не завершится.

да, если она не завершится, то это будет именно то что хотел программист

rust_afari ()
Ответ на: комментарий от yetanother

Большинство либ-утилит довольно примитивные, но нужно много человеко-часов чтобы их реализовать. Поэтому наличие толп студентов/джунов очень спасает.

RazrFalcon ★★★★★ ()
Последнее исправление: RazrFalcon (всего исправлений: 1)
Ответ на: комментарий от rust_afari

Я правильно понимаю - статический анализатор доказывает, что программа завершается?

доказывает что не будет сегфолта из-за выхода массива за пределы памяти

Не совсем так, но, в любом случае, это не имеет никакого отношения к решению halting problem.

И, как я слышал, система типов Rust позволяет написать программу, на которой компилятор никогда не завершится.

да, если она не завершится, то это будет именно то что хотел программист

И, опять же, никакого отношения к решению halting problem это не имеет.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Нашёл справку про проблему Тьюринга. Оказалось, что он был эксцентричный англичанин, но его проблема относится к теоретической математике, а не к программированию. В программировании такой проблемы нет, и следовательно Rust её не решает.

Но в нём облегчено программирование параллельной обработки за счёт уменьшения возможностей race conditions (вероятности одновременного изменения общих данных разными потоками выполнения) даже по сравнению с Go, где для этого тоже приняты меры.

Как параллельную обработка организована в D, я не узнавал, но сейчас это важная тема при программировании, так что влияет на полезность языка.

Partisan ()
Ответ на: комментарий от Partisan

Нашёл справку про проблему Тьюринга. Оказалось, что он был эксцентричный англичанин, но его проблема относится к теоретической математике, а не к программированию. В программировании такой проблемы нет

facepalm.mkv.rar

tailgunner ★★★★★ ()
Ответ на: комментарий от rust_afari

а к чему же по вашему это все имеет отношение? Ну кроме очевидного, что к безопасности

«Не будет сегфолта» - только к безопасности, больше ни к чему. И, кстати, это основывается на допущении, что система типов Rust является sound (пару маленьких дырочек в ней нашли, но залатали).

А решения halting problem в Rust нет, так что заявления о ее решении относятся к бреду.

tailgunner ★★★★★ ()
Ответ на: комментарий от RazrFalcon

Большинство либ-утилит довольно примитивные, но нужно много человеко-часов чтобы их реализовать. Поэтому наличие толп студентов/джунов очень спасает.

Такую примитивную либу-утилиту сеньер напишет намного быстрее и качественнее чем десяток джунов. Толку от этих либ нет, кроме как создание массовки. Интересную и полезную либу джун не напишет и даже сеньеру тоже будет не просто. Для примера пространственный индекс а-ля RTree дерево джуны не напишут от слова совсем. И даже портировать с другого языка вызовет проблемы, возможно не разрешимые. Так что качество разработчиков рулит намного больше чем их количество.

yetanother ()
Ответ на: комментарий от RazrFalcon

Я пол темы пытаюсь выбить у фанбоев D список его преимуществ перед Rust, а получаю лишь мутные ответы.

Так вы озвучьте критерии по которым язык оцениваете. У всех критерии свои. И для каждой задачи свой наиболее подходящий инструмент. А вы получается просто фанбой Раста который хочет показать что Раст лучше Ди безусловным порядком. Ждете некий список достоинств чтобы показать что Раст лучше. Ну будьте серьезнее.

yetanother ()
Ответ на: комментарий от rust_afari

раст ценен как язык не дающий удалить массив за пределами границ памяти

а то языков с проверкой границ до него не было.

позволяет еще безопаснее эксплуатировать приложения на нем, поэтому за ним будущее

Вот когда будут на нём массовые приложения не от его основного разработчика, тогда и обсудим.

grem ★★★★★ ()
Ответ на: комментарий от rust_afari

раст ценен как язык не дающий удалить массив за пределами границ памяти

Проблема века размер массива в переменной хранить :D

что автоматически на уровне языка ликвидирует многие уязвимости

Ну отчасти, это скорее оправдывает то что программист в душе не***т какого размера у него данные в памяти лежат

биткоины были как пример того, что в то, во что многие не верят, на самом деле и есть будущее человечества

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

FUNCTION ()
Ответ на: комментарий от eao197

Вот так и nodejs задавил не качеством, а количеством :D Миллиард библиотек наштамповали и каждую по 200 раз форкнули. 99% проектов мертвы, но про это никто не знает трупы так и висят в зависимостях пока окончательно не сгниют и из за них что-то отвалится )

FUNCTION ()
Ответ на: комментарий от tailgunner

Понял наконец предмет обсуждения. То есть, какая была проблема у некоего Тюнинга с автобусной остановкой, я так и не понял. Но переведя обсуждение с Тьюринга и его автобусной остановки на терминологию программирования, понял.

Значит, вопрос был: устраняет ли Rust возможность deadlock (взаимной блокировки потоков выполнения программы) при race conditions (гонки потоков выполнения за доступ к общему ресурсу). Краткий поиск в Google по словам rust deadlock позволил найти программные примеры на Rust, в которых возможен deadlock. То есть, всё становится просто, если выражаться человеческим языком.

Разные языки в разной степени облегчают или затрудняют программирование многопоточной обработки так, чтобы не возникало глюков(взаимная блокировка потоков - один из типичных глюков. Два потока выполнения программы закрепляют за собой ресурс (lock)и ждут, пока другой поток не освободит его. Это - ситуация взаимной блокировки(deadlock), при которой в худшем случае выполнение программы может остановиться). Rust уменьшает возможность таких ошибок, но не устраняет их полностью. Как обстоит в D - тема для оценки его полезности.

Partisan ()
Ответ на: комментарий от yetanother

Ну так раз на D пишут только мега-спецы - где же рассвет крутых либ? Я слышал только про vibe.d и какую-то либу для json. Но не уверен что они сильно лучше actix-web и serde.

а-ля RTree дерево

Зачем его вообще писать? Вы ещё про lock-free структуры расскажите.

Буквально вчера мне нужна была либа-парсер BCP 47. И она для раста есть. А для D есть?

RazrFalcon ★★★★★ ()
Ответ на: комментарий от yetanother

Фанбоев тут только два. И я не в их числе.

У всех критерии свои. И для каждой задачи свой наиболее подходящий инструмент.

Я уже 10 раз упомянул прикладное программирование.

Уточню: консольные утилиты. Почему-то в этой сфере сейчас доминируют Rust и Go, а D даже не слышно. Хотя по-логике он лучше подходит для этой задачи. Как же так?

RazrFalcon ★★★★★ ()
Ответ на: комментарий от FUNCTION

Проблема века размер массива в переменной хранить :D

проблема не хранить, проблема вовремя проверять

Ну отчасти, это скорее оправдывает то что программист в душе не***т какого размера у него данные в памяти лежат

за этим должен следить язык

односвязный список из хешей промыл всем мозг

но работает

rust_afari ()
Ответ на: комментарий от grem

а то языков с проверкой границ до него не было.

компилируемых ? мейнстримовых? неприпомню что-то...

Вот когда будут на нём массовые приложения не от его основного разработчика, тогда и обсудим.

уже есть открытая ОС

rust_afari ()
Ответ на: комментарий от O02eg

лучше 10К библиотек, из которых 1К окажутся «грамотными и практическими», чем ровно 1К «грамотных и практических» библиотек.

Сомнительное утверждение. Наличие лишних 9K говна никак не украсит этот мир.

anonymous ()
Ответ на: комментарий от rust_afari

компилируемых ? мейнстримовых? неприпомню что-то...

ты просто слишком молод

уже есть открытая ОС

когда-нибудь её название может быть будет даже у всех на слуху

grem ★★★★★ ()
Ответ на: комментарий от grem

ты просто слишком молод

ты не знаешь сколько мне, я был во вьетнаме

когда-нибудь её название может быть будет даже у всех на слуху

скоро уже, вендекапец, а монополии линукса не получится, максимум 90-95% рынка

rust_afari ()
Ответ на: комментарий от rust_afari

Тьюринг, вообще-то, доказал неразрешимость проблемы останова машины Тьюринга в общем случае. Так что, проблема останова может быть «решена» в расте только одним способом — ограничить раст, сделав его не тьюринг-полным.

Есть ли сведения о том, что раст, в отличие от большинства языков, не является тьюринг-полным?

anonymous ()
Ответ на: комментарий от rust_afari

раст ценен как язык не дающий удалить массив за пределами границ памяти, что автоматически на уровне языка ликвидирует многие уязвимости

void main()
{
int[10] x;
x[10]=0;
} 

testO.d(4): Error: array index 10 is out of bounds `x[0 .. 10]`

anonymous ()
Ответ на: комментарий от anonymous

Тьюринг, вообще-то, доказал неразрешимость проблемы останова машины Тьюринга в общем случае.

думаю речь шла о частном случае выхода границ за пределы массива и избегания гоночных кондиций на уровне компиляции

rust_afari ()
Ответ на: комментарий от rust_afari

думаю речь шла о частном случае выхода границ за пределы массива

Что-то не видно в расте зависимых типов, а примитивные частные случаи выхода за границы и D вызывают ошибку.

anonymous ()
Ответ на: комментарий от rust_afari

хорошие фичи переходят и в другие языки, вот видишь, Rust уже на D повлиял

Эта фича была в D лет 15 наверно уже назад, точно до того как раст даже в проекте был.

anonymous ()
Ответ на: комментарий от anonymous

Эта фича была в D лет 15 наверно уже назад, точно до того как раст даже в проекте был.

ну это примитивный статический анализ же, ты попробуй что посложнее с гоночной кондицией, например

rust_afari ()
Ответ на: комментарий от rust_afari

а ты читал мануал по расту, или только этот тред ?

Читал поверхностно, зависимых типов там не видел, да и любители раста давно бы всем уши прожгли если бы они там были :)

anonymous ()
Ответ на: комментарий от rust_afari

Ты бы лучше троллил на темы, о которых что-то хоть близко знаешь. Вон Партизан джаву осилил, теперь свободно троллит про любые хаскелли, бери пример.

anonymous ()
Ответ на: комментарий от RazrFalcon

Преимущества D перед Rust:

- чистый синтаксис
- развитые, удобные, безопасные типы, это стоит рассматривать вкупе с легкостью взаимодействия D + C, и вызова D из C
- возможность писать скрипты на D

Ты, видимо, не читал тему, или читал одним глазом.

menangen ★★★★★ ()