LINUX.ORG.RU

Вышел Rust 1.0 Beta

 ,


2

7

3 апреля 2015 года, в полном соответствии с планом, вышла бета-версия Rust 1.0. Язык и большая часть стандартной библиотеки окончательно стабилизированы, до финального релиза возможны только минимальные изменения в API.

Некоторые изменения со времени альфа-версии, вышедшей 9 января:

Полный список изменений.

Так же разработчики отмечают рост экосистемы языка. Репозиторий crates.io недавно преодолел отметку в 1 миллион загрузок и содержит более 1700 модулей, готовых для использования. В данный момент идет работа по обновлению устаревших модулей до бета-версии. Большая часть документации (The Book, Rust By Example, The Rust Reference, API reference) приведена в соответствии с вышедшей бета-версией.

Окончательный релиз Rust 1.0 запланирован на 16 мая, разработчики потратят оставшиеся до релиза 6 недель на тестирование, исправление ошибок и обновление документации.

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

anonymous

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

Есть vim с подсветкой и автодополнением.

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

Возможно. Но запускается нода очень долго. У меня в тестах около 30 запусков интерпретатора с минимумом кода. Выполняются 2 секунды

makoven ★★★★★
()
Последнее исправление: makoven (всего исправлений: 2)
Ответ на: комментарий от Vudod

Для низкоуровневых операций, где каждый бит дорог, ничего лучше asm всё равно не будет

fixed

Очередная попытка сделать C++, только лучше. Ничего путного не выйдет

пока получается вполне годно. я не уверен, что rust по фичам приближается к С++, но уж точно обходит С, при этом (по крайней мере, так заявлено) без ущерба для производительности

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

Т.е. Вас просто назначили на неподходящую для вас часть проекта.

ни разу не видел в вакансиях (или резюме) что-то вроде

знаю C++, кроме templates, overloading

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

Ну в расте оно может и к месту. В принципе есть panic, вроде как он прибивает поток, а не программу, так что можно писать всякие серверы без прокидывания SQLException-ов наверх.

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

py

if "chunked" in request.transfer_encodings:
   return

ruby

return if request.transfer_encodings.include? 'chunked'

d

if (request.transferEncodings.canFind("chunked"))
   return;

c++

const auto& arr = request.transfer_encodings;
if (find(arr.begin(), arr.end(), string("chunked")) != arr.end())
   return;

Как тоже самое будет на Rust? Пока я так и ну услышал ни одного реального преимущества над D. Понятно дело, что в каких-то очень узких местах может быть перевес, но вопрос, на сколько в реальных задачах язык будет удобен. Пока что, что никаких преимуществ не нашел.

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

Задача простых примеров показать на сколько просто тривиальные задачи решаются.

anonymous
()
Ответ на: комментарий от anonymous
if request.transferEncodings.contains("chunked") {
    return;
}

если я правильно понял, что ты хочешь.

Legioner ★★★★★
()
Ответ на: комментарий от anonymous
//если request.transfer_encodings - это строка
if request.transfer_encodings.contains("chunked") {return}
//если request.transfer_encodings - это вектор строк
if request.transfer_encodings.iter().any(|x| &x[..]=="chunked") {return}
anonymous
()
Ответ на: комментарий от anonymous

разрабатывается некоммерческой организацией, в отличие от

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

Вот интересно, а go тоже нетороплив при запуске?

не, норм, быстро стартует

shty ★★★★★
()

каждый топик по расту на любом форуме это детектор неосиливших кресты

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

Сравнивать &str и String напрямую нельзя же. В случае с contains придется делать «chunked».to_string(), т.е. аллоцировать вектор символов в куче. У того чудика сверху в примере с С++ так и делается, лол. А в моем примере String-и (std::string) без какого то оверхеда кастуются в &str (const char*) и сравниваются с &'static str (static const char*).

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

каждый топик по расту на любом форуме это детектор неосиливших кресты

Ты забыл ещё про D, go и др. Есть одно обстоятельство: целиком осилившему кресты в их современном виде больше уже ничего не нужно от жизни.

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

целиком осилившему кресты в их современном виде больше уже ничего не нужно от жизни

удобный инструмент без побочных эффектов для решения задач, для которых кресты оверкилл? скорость разработки?

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

Вру. Сравнивать можно, есть стандартная реализация трейта:

impl<`a> PartialEq<&`a str> for String
impl<`a> PartialEq<String> for &`a str
Тут проблема в contains трейта SliceExt. Этот метод принимает для сравнения не любую структуру, для которой реализован PartialEq<T>, а только само T.

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

Ты забыл ещё про D, go и др

ескобар.джпеге

современном виде

в современном виде вобще норм

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

Сравнивать &str и String напрямую нельзя же. В случае с contains придется делать «chunked».to_string(), т.е. аллоцировать вектор символов в куче. У того чудика сверху в примере с С++ так и делается, лол. А в моем примере String-и (std::string) без какого то оверхеда кастуются в &str (const char*) и сравниваются с &'static str (static const char*).

Ну да, тоже верно. С другой стороны можно хранить все заголовки исходного сообщения, как один массив байтов в объекте запроса, а в этом массиве transfer_encoding хранить &str, ссылающиеся на этот массив.

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

И где вам GC мешает-то?

Мне на андроиде мешает

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

http://sealedabstract.com/rants/why-mobile-web-apps-are-slow/ http://www-cs.canisius.edu/~hertzm/gcmalloc-oopsla-2005.pdf

In particular, when garbage collection has five times as much memory as required, its runtime performance matches or lightly exceeds that of explicit memory management. However, garbage collection’s performance degrades substantially when it must use smaller heaps. With three times as much memory, it runs 17% slower on average, and with twice as much memory, it runs 70% slower. Garbage collection also is more susceptible to paging when physical memory is scarce. In such conditions, all of the garbage collectors we examine here suffer order-of-magnitude performance penalties relative to explicit memory management.

Теперь посмотри, сколько твой браузер съедает памяти, умножь на 5, и подумай, почему мозилла не хочет писать свой следующий браузер на языке с GC. Или умножь на всего на 2, но представь его медленнее в 1,5 раза. Ну ты понял.

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

А вот и неправильно. В (идиоматичном) Rust изначально был бы создан enum со всеми возможными значениями transfer_encodings. Для примера смотрите как это делают в любой сетевой либе из Cargo.

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

неосиливших кресты

Как будто в этом что-то плохое.

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

мудило на крестах такой же неосилятор как и все кто ему ответил потом

if (find(arr.begin(), arr.end(), «chunked») != arr.end())

у std::basic_string есть operator==() который принимает const CharT*

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

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

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

Не понятно, как ты так решил - memory safety без GC это прямой конкурент С/С++ - но даже в этом случае, это будет на одно приложение больше, чем D.

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

Это только разработчикам компиляторов нужно.

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

открой для себя наконец то std::shared_ptr<>

если ты про borrow checking то нужность данной вещи весьма сомнительна

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

каждое приложение на плюсах — это детектор неосиливших кресты.

fixed

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

ООП там совсем другое.

Аминь

Именно поэтому Rust никогда не взлетит. Единственный язык который активно используется и имеет сильно другое ООП - это javascript, но так уж сложилось и альтернативы тут просто нет, и объем кода обычно позволяет обойтись без тяжелого ООП.

Ничего существенного, прорывного в плане развития индустрии программирования rust предложить не может. Поэтому его удел - домашние проектики задротов-илитариев.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Именно поэтому Rust никогда не взлетит. Единственный язык который активно используется и имеет сильно другое ООП - это javascript

В Go похожее ООП (гораздо более угребищное за счет отсутствия дженериков).

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

Не понимаю, как это относиться к гомоиконности. Фактически это означает, что в стандартной библиотеке есть функция которая мапит произвольные данные в строку и обратная.

Речь именно про данные, причем тут код и то, что у него тоже представление в строках что и у данных - непонятно.

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

Для чего это? В любом интерпретируемом языке вроде как можно сделать:

-- data.lua
Entity({1, 2, {"yo"})
Entity({"two", "three")
...

-- main.lua
function Entity(...)
  -- Сохранить даные 
end
dofile("data.lua")

Но это только десериализация. А вот сериализацию не сделаешь ни через sexp ни через другие языки. Так что XML или JSON.

makoven ★★★★★
()
Последнее исправление: makoven (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.