Pull to refresh
19
0
Send message
Спасибо что напомнили, я кажется видел что csope можно использовать в качестве бэкенда для global.
Спасибо за статью.

С разными тегами самая назойливая для меня проблема — это когда один и тот же символ определён в очень большом числе мест. Поскольку я занимаюсь системным программированием на Си, и часто работаю с кастомными тулчейнами, у нас много где определены всякие вещи типа memcpy. exuberant-ctags в таком случае предлагает просто первое попавшееся определение и перебирать их (даже пусть с помощью helm) не хочется.

А как с этим у Global? Пытается ли там индекс учитывать то, откуда какие определение видны?
В стандартной библиотеке должно быть только то, что не меняется практически никогда и поэтому может жёстко версионироваться одновременно с компилятором. Если вы включаете HTTP в std, вы не можете выпустить новую версию своего HTTP-клиента без выпуска новой версии std (т.е., по сути, без выпуска новой стабильной версии компилятора).

И да, HTTP, наверное, меняется довольно редко, но по такой логике можно захотеть втащить ещё кучу application-level протоколов. Это не сфера ответственности Rust. Это системный язык.

Если говорить конкретно, уже есть стандарт де-факто для HTTP — hyper. Просто потому что это первая достаточно полная достаточно стабильная реализация. Его не надо тащить в std, чтобы пользоваться им. При этом он всё же достаточно сложен, чтобы его нельзя было реализовать «очень быстро» и больше никогда не менять. Т.е. сам hyper сейчас активно развивается. Включение его в std сильно замедлило бы его развитие, потому что новые стабильные версии контейнера можно выпускать гораздо быстрее, чем новые стабильные версии std.

Если так интересно расширение std, вот курируемый список де-факто стандартных библиотек.
А вам известны игры на нём?

Ни у них на сайте, ни в поиске ничего (совсем) релевантного не нашёл. Есть примеры от создателей, но я всё же про сторонние игры.
Не понял.

Предоставляет полное ядро для написания игр? Предоставляет. Игры на нём делают? Делают. Значит движок.

Другое дело, что сопустсвующих инструментов там не особо, и игры делают пока любительские. Это не SDK вроде Unity и Unreal, это просто движок, хотя и любительский.

То что он побит на тучу библиотек в своих репозиториях — вообще не принципиально. Под одной крышей он их объединяет.
Кстати, на Go есть игровые движки? На Rust есть Piston.
Нет.

Моё мнение (совпадающее с мнением некоторых разработчиков Rust) — в стандартной библиотеке должен быть необходимый минимум вещей, у которых есть гарантированно оптимальная или общепринятая реализация (что называется, non-controversial и не opionated). HTTP-клиент к ним не относится.

Встречный вопрос: у вас есть как минимум 1 нормальный HTTP-клиент вне стандартной библиотеки; зачем его тащить внутрь?
О, интересно. Я видел, что они недавно какую-то штуку на Rust интегрировали в Gecko, но не думал, что это в рамках их плана постепенно всё заменить.
Спасибо. Куда полезнее, чем очередной перевод сомнительного срача.
Go стабилизировался 3 года назад, Rust — 2 месяца назад. Конечно, для Go будет написано гораздо больше продуктовых вещей.

При этом для Rust уже есть сетевой стек, который вполне можно использовать — hyper, rustc-serialize, rust-postgres. Я этим пользовался для переписывания простого серверного приложения на Go — всё получилось, никаких принципиальных проблем. В целом же, вот статус сетевого стека для Rust.
В Firefox внедрять его не слишком много смысла. На данный момент Servo — исследовательский движок, вокруг которого скорее всего придётся строить новый браузер, чтобы хорошо использовать его многопоточность, например.

В то же время, Servo использует кучу существующих библиотек на C++ и да, Rust это «исследовательский язык для Servo». Но когда-то C был «исследовательским языком для Unix», просто никто не клеймил его такими ярлыками, потому что решение задачи в программировании — очень часто исследование.
Может и «годятся», но так-то и Nim «годится». Заставить работать можно, только это ничего не даёт — во-первых, нужна память для среды исполнения, во-вторых, гарантии безопасности Rust статические — во время исполнения это ничего не стоит.
Тут говорят о том, что у Rust практически отсутствует среда исполнения, поэтому его можно легко встраивать в языки с runtime. В официальной книге есть пример вызова Rust из Ruby.
Ещё бы HTML5-плеер работал за проксёй, хорошо бы было.
Забавно. Переоткрытие статического связывания уже выглядит, как достижение и инновация.
Dynamic dispatch на типажах реализуется через объекты типажей, подробнее можно посмотреть, например, здесь.

Перегрузки по аргументу нет.

То, что вы тут приводите, можно сделать так:

trait Base {
    fn print(&self);
}

struct Der1;

struct Der2;

impl Base for Der1 {
    fn print(&self) {
        println!("Der1")
    }
}

impl Base for Der2 {
    fn print(&self) {
        println!("Der2")
    }
}

fn main() {
    let d1 = Der1;
    let d2 = Der2;
    let v: Vec<&Base> = vec![&d1, &d2];
    for e in v {
        e.print()
    }
}


Соответстенно типаж лучше назвать не Base, а Printable, или как-то так, чтобы отражалась суть поддерживаемых операций.
Discourse очень классный — пользуюсь им на internals.rust-lang.org и users.rust-lang.org. Отзывчивый и удобный интерфейс, на телефоне хорошо работает.

Успехов с переходом! :)
Каких DoS-атак?
Отключаемый-не отключаемый — это не так интересно. В Nim он тоже «отключаемый» и можно при желании пользоваться голыми указателями.

Сила Rust не в отсутствии GC как таковом, а в отсутствии GC и безопасности работы с памятью при этом.
1
23 ...

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity