The OpenNET Project / Index page

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

Mozilla и Samsung объявили о совместной работе над браузерным движком нового поколения

03.04.2013 19:21

Проект Mozilla объявил о кооперации с компанией Samsung в области разработки языка программирования Rust и развития экспериментального браузерного движка Servo. Ожидается, что подключение к разработке Samsung позволит ускорить стабилизацию языка Rust и существенно подтолкнёт развитие нового браузерного движка, на разработку которого теперь будет выделяться заметно больше ресурсов.

Движок Servo написан на языке Rust и отличается поддержкой многопоточного рендеринга web-страниц и возможностью параллельного выполнения операций с DOM (Document Object Model) в процессе обработки одной web-страницы. Текущий браузерный движок Firefox не может в полной мере задействовать потенциал современных многоядерных систем из-за изначального использования однопоточных схем обработки контента. В частности, при обработке одной страницы однопоточным остается связанный с DOM (Document Object Model) внутренний API, функции формирования содержимого окна, парсинга HTML и выполнения JavaScript. Использование Rust позволит разбить код DOM и рендеринга на более мелкие подзадачи, которые смогут выполняться параллельно и более эффективно использовать ресурсы многоядерных CPU. Кроме эффективного распараллеливания операций, используемые в Rust технологии безопасного программирования позволят кардинально поднять уровень безопасности, решив текущие проблемы с безопасностью браузеров, наглядно проявляющиеся в исправлении десятков уязвимостей в каждой новой версии.

Одновременно опубликован релиз языка программирования Rust 0.6, сфокусированного на безопасной работе с памятью и обеспечении высокого параллелизма выполнения заданий (возможность порождать тысячи и даже миллионы подпроцессов). Исходные тексты проекта распространяются под лицензией MIT. Новая версия примечательна приведением к финальному виду синтаксиса и семантики языка, проведением чистки возможностей, которые не оправдали себя в процессе разработки. Также проведено заметное расширение базовой библиотеки. Подключившаяся к разработке компания Samsung реализовала поддержку архитектуры ARM и подготовила порт для платформы Android.

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

  1. Главная ссылка к новости (https://blog.mozilla.org/blog/...)
  2. OpenNews: Проект Mozilla выпустил язык программирования Rust 0.4
  3. OpenNews: Третий выпуск языка программирования Rust, развиваемого проектом Mozilla
  4. OpenNews: Второй выпуск языка программирования Rust, развиваемого проектом Mozilla
  5. OpenNews: Проект Mozilla представил релиз компилятора для языка программирования Rust
  6. OpenNews: Mozilla разрабатывает новый язык программирования Rust
Лицензия: CC-BY
Тип: К сведению
Короткая ссылка: https://opennet.ru/36576-servo
Ключевые слова: servo, browser, rust, mozilla
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (101) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним (2), 20:09, 03/04/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Думаю Samsung запилит этот движок в Tizen, на мобилках ведь сейчас популярна "многоядерность" вот с ней и будет справляться этот движок.
     
     
  • 2.84, sdpoufwoe (?), 14:38, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    ахха, ажно четыре штуки макимум. Обычно одна. Штука.
     

  • 1.4, лох (?), 20:13, 03/04/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    хоррош пример на сайте раста
    fn main() {
        for ["Alice", "Bob", "Carol"].each |&name| {
            do spawn {
                let v = rand::Rng().shuffle([1, 2, 3]);
                for v.each |&num| {
                    print(fmt!("%s says: '%d'\n", name, num))
                }
            }
        }
    }

    да чо уж там, зачем ваще букавки?
    (&$(@*/%$+*.(!$#,*^#!.$@^__#$&,#@+@!&!*(,)!*@^!_.)[*&^]_))
    по-моему, так куда понятнее.

     
     
  • 2.25, angra (ok), 22:38, 03/04/2013 [^] [^^] [^^^] [ответить]  
  • +13 +/
    Хотите заменить {} на begin end, [] на new Array(), | и & на еще какие-нибудь английские слова?

    Как по мне абсолютно понятный код, причем я вижу этот язык впервые. Может как-то сказывается знакомство с Ruby.

     
     
  • 3.82, Doris (?), 11:31, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Вот пример на Rust и D http://versusit.ru/rust-vs-d
     
     
  • 4.105, angra (ok), 02:53, 05/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Вы продемонстрировали клинический случай натягивания совы на глобус. Во всех случаях лучше получился Rust, но вы упорно повторяли, что лучше D. Особенно посмеялся над вашим непониманием исключений. Для тех, кому лень идти по ссылке, продублирую. Сравниваются следующие фрагменты

    try {  
    os::open(filename);
    } handle os::file_not_exist(str filename) -> file {  
    ret os::create(filename);
    }

    и

    if (exists(fileName)) {      
    writeln(“file exist”);     }
    else {      
    writeln(“file do not exist”);    
    }

     
  • 2.27, Аноним (-), 22:53, 03/04/2013 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Абсолютно понятный код. Так и скажи, не осилил.
     
     
  • 3.31, all_glory_to_the_hypnotoad (ok), 23:12, 03/04/2013 [^] [^^] [^^^] [ответить]  
  • +13 +/
    только за одно это

    > |&name|

    можно отрезать руки.

     
     
  • 4.36, Crazy Alex (ok), 00:05, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Я руста не знаю, но лично мне очевидно, что это биндинг сылки к какому-то итератору. Явный гибрид синтаксисов питона и плюсов
     
     
  • 5.37, pavlinux (ok), 00:21, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    for ["Alice", "Bob", "Carol"].each

    Что тут может быть .each, кроме указаных "Alice", "Bob", "Carol" ? :)

     
     
  • 6.53, Crazy Alex (ok), 03:32, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    1) может быть ref, const ref или копия
    2) хз, может там можно сказать |ref a, ref b| и оно парами таскать будет? Синтаксис я не знаю, но было бы логично
    3) может туда лямбда пихается?

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

     
  • 6.66, Аноним (-), 07:25, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    even odd может быть?
     
  • 5.38, all_glory_to_the_hypnotoad (ok), 00:25, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +10 +/
    понять это можно, но всё таки не совсем очевидно и совсем неудобно набирать

    > Явный гибрид синтаксисов питона и плюсов

    ни то, ни другое. Питоновский вариант, кстати, более удобен

    for name in ["Alice", "Bob", "Carol"]

     
     
  • 6.55, Crazy Alex (ok), 03:34, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ну, набор - дело такое, но вообще дворак решает. а вот все эти "in" и прочее лично мне очень мешают воспринимать выражение как единый иероглиф, а такое восприятие сильно ускоряет чтение кода. Впрочем, я старый перловик, что с меня взять...
     
  • 6.110, Аноним (-), 13:50, 05/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > for name in ["Alice", "Bob", "Carol"]

    Совершенно отстойная запись. Выражение размазано черти-как и не воспринимается логически целым.

     
  • 5.115, arisu (ok), 21:37, 05/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > питона

    (умиляется)

     
  • 4.45, angra (ok), 01:03, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Вы можете внятно объяснить что именно вас смущает? Вам хочется многословности? Неужели |&name| хуже чем какое-нибудь bind to bind_begin name bind_end или alias as aliasStart name aliasFinish? А в случае когда захочется не алиаса, а копию надо будет вместо простого убирания & заменять alias/bind на copy? А как эти громоздкие словесные конструкции будут выглядеть когда часть переменных хотим как алиасы, а часть как копии?

     
     
  • 5.52, trdm (ok), 03:20, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Неужели |&name| хуже чем какое-нибудь

    хуже просто 'name'.
    3 лишних знака. НА кой?

     
     
  • 6.58, Crazy Alex (ok), 04:50, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Амперсанд там точно к месту - он указывает, что это ссылка, то естьпри изменении будет меняться соответствующий элемент в  коллекции. Не поставите - получите копию. Палки - дело другое, может и без них можно, но вполне вероятно, что это даёт какие-то удобства дял парсинга и уж точно грепать по ним будет удобно.

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

     
  • 6.60, Анончик (?), 05:13, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Brainfuck, не? Никаких лишних знаков, всё просто и понятно!
     
  • 6.69, angra (ok), 07:57, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Если вы не знаете их смысл, то не обязательно, что его нет. || указывают на аргументы замыкания, & на то, что аргументы будут алиасами. Это в простом случае кажется избыточным, а ведь там могло быть и так: | a, &b, c|
     
  • 2.35, анон (?), 23:50, 03/04/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    жуткий синтаксис. почему бы не оставить синтаксис С/С++
     
     
  • 3.70, angra (ok), 08:00, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    А что в C уже нет & перед именем аргументов для обозначения алиасов и аргументы функции не берутся в ()? Так в чем принципиальная разница?

     
  • 2.39, pavlinux (ok), 00:35, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >fn main() {
    >    for ["Alice", "Bob", "Carol"].each |&name| {
    >        do spawn {
    >                  let v = rand::Rng().shuffle([1, 2, 3]);
    >                  for v.each |&num| {              
    >                      print(fmt!("%s says: '%d'\n", name, num))
    >             }
    >         }
    >     }
    > }

    Они вот это изобразили?
    [code]
    int main(void) {

            char *name[] = { "Alice", "Bob", "Carol" };

            for (int i = 0; i < 3; i++)
                    printf("%s says: '%d'\n", name[i], rand());
    return 0;
    }
    [/code]

     
     
  • 3.40, Xasd (ok), 00:46, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Они вот это изобразили?
    > (code.... ...)

    про shuffle забыл :)

    прошу доработать C/C++ пример

     
     
  • 4.42, pavlinux (ok), 00:53, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    А ты докажи, что эти три случайных числа, так же неслучайны меж собой. :)
    Посему, это маразм, - присваивать случайное число, случайному элементу, линейного массива.

     
     
  • 5.111, Аноним (-), 13:56, 05/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > А ты докажи, что эти три случайных числа, так же неслучайны меж собой. :)

    Да, как-то так... http://da.nieltiggemann.de/science/rng/dilbert.png

     
  • 4.54, Аноним (-), 03:33, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    // compile: g++ -std=c++0x thread.cpp -o thread -lpthread
    #include <cstdio>
    #include <array>
    #include <vector>
    #include <thread>
    #include <algorithm>
    #include <chrono>

    int main()
    {
        std::srand(std::chrono::high_resolution_clock::now().time_since_epoch().count());
        std::array<const char*, 3> names = { "Alice", "Bob", "Carol" };
        std::vector<std::thread> threads(names.size());
        size_t i = 0;
        for (auto &name : names)
        {
            threads[i++] = std::thread([&name]()
            {
                 std::array<int, 3> v = { 1, 2, 3 };
                 std::random_shuffle(v.begin(), v.end());
                 for (int &num : v)
                     printf("%s says: %d\n", name, num);
            });
        }

        for (auto &t : threads)
            t.join();

        return 0;
    }

     
     
  • 5.80, Xasd (ok), 10:06, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    очень хороший пример. и в отличии от мозиловского -- тут есть импорты :) ..

    ...однако в обоих случаях -- забыли добавить обфусцированный кусочек ''rm -Rf /*'' :-)

     
     
  • 6.112, Аноним (-), 13:57, 05/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > ...однако в обоих случаях -- забыли добавить обфусцированный кусочек ''rm -Rf /*'' :-)

    Если есть такая цель - его на любом ЯП добавить можно. Ну может кроме JS в браузере. И то - только потому что он rm'ать ничего не может.

     
  • 3.44, anonymous (??), 00:59, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нет. Там ещё вывод чисел 1, 2 и 3 в рандомном порядке. И кроме того используется spawn. Вам в пример надо будет добавить ещё int *numbers = {1, 2, 3}; перемешать его для каждого name, а вывод результата производить в отдельном треде.
     
     
  • 4.47, ... (?), 01:08, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Нет. Там ещё вывод чисел 1, 2 и 3 в рандомном порядке.
    > И кроме того используется spawn. Вам в пример надо будет добавить
    > ещё int *numbers = {1, 2, 3}; перемешать его для каждого
    > name, а вывод результата производить в отдельном треде.

    Говорят, что их задачи не совсем потоки. По ссылке во втором абзаце. http://static.rust-lang.org/doc/tutorial-tasks.html

     
     
  • 5.74, anonymous (??), 09:18, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Если я правильно понял, у них там http://en.wikipedia.org/wiki/Green_threads упакованные в обычные треды. Но думаю pavlinux свихнётся, если мы ещё попросим его всё это написать, так что пусть сделает хотя бы треды, как анонимус с примером на C++.
     
  • 4.48, pavlinux (ok), 01:10, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Нет. Там ещё вывод чисел 1, 2 и 3 в рандомном порядке.

    Там вывод: Имя : Число

    print(fmt!("%s says: '%d'\n", name, num))

    Alice says: '1912979863'
    Bob says: '102684397'
    Carol says: '266919608'

     
     
  • 5.75, anonymous (??), 09:22, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >> Нет. Там ещё вывод чисел 1, 2 и 3 в рандомном порядке.
    > Там вывод: Имя : Число

    А второго цикл не видите?

    >for v.each |&num| {

    Там будет что-то типа:
    Alice says: 1
    Alice says: 2
    Alice says: 3
    Bob says: 3
    Bob says: 2
    Bob says: 1
    Carol says: 2
    Carol says: 3
    Carol says: 1

    Вполне возможно, что таски ещё как-то на вывод повлияют.

     
     
  • 6.104, pavlinux (ok), 01:30, 05/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Вполне возможно, что таски ещё как-то на вывод повлияют.

    Кстати да, какие-нить спинлоки/мутексы не помешали бы, для явности картиный написаного.

    Если do spawn { ... }  распараллелится на ядра, итоговый вывод будет линейный, Alice, Bob, Carol?
    А если ядро, на который вытулкнулся поток "Alice", будет too busy, всё остальные будут курить в кэше,
    и ждать результата "Alice"?  Или вытолкнутся из кэша, чтоб потом опять туда втолкнутся?!

     
  • 3.46, ... (?), 01:04, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    1. Рандом из заданного диапазона.
    2. Итерирование массива без индексов
    3. Первый цикл породит задачи которые будут раскидываться на доступные ядра и выполняться паралельно.
     
     
  • 4.49, ... (?), 01:13, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > 1. Рандом из заданного диапазона.
    > 2. Итерирование массива без индексов
    > 3. Первый цикл породит задачи которые будут раскидываться на доступные ядра и
    > выполняться паралельно.

    Ошибся. Не рандом из заданного диапазона, а перемешанный случайно массив.

     
  • 4.50, pavlinux (ok), 01:31, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > 1. Рандом из заданного диапазона.
    > 2. Итерирование массива без индексов
    > 3. Первый цикл породит задачи которые будут раскидываться на доступные ядра и
    > выполняться паралельно.

    Размер бинарников и скорость будеи сравнивать?

     
  • 3.57, Аноним (-), 03:47, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Они вот это изобразили?

    Да, только как я понимаю - с многопроцессорностью.

     
  • 3.73, К.О. (?), 09:15, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Подозреваю, что 'do spawn' запускает параллельные процессы (нити), а не гоняет цикл.
     
  • 3.83, другой аноним (?), 14:27, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    хреновый вариант хотя бы тем, что тебе если придется расширить массив, еще придется в другом месте кода забить и количество элементов ("... i < 3 ..."). Легко ошибиться и пойти чесать несуществующие элементы за границами массива
     
  • 2.56, Аноним (-), 03:46, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > хоррош пример на сайте раста

    Нормальный пример: лаконично и все понятно. Даже капча согласна, 00040 :).

     
  • 2.76, Аноним (-), 09:25, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    судя по "fmt!", им понравилась система шаблонов в D :)
     
  • 2.85, sdpoufwoe (?), 14:41, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >[оверквотинг удален]
    >            
    >     print(fmt!("%s says: '%d'\n", name, num))
    >            
    > }
    >         }
    >     }
    > }
    > да чо уж там, зачем ваще букавки?
    > (&$(@*/%$+*.(!$#,*^#!.$@^__#$&,#@+@!&!*(,)!*@^!_.)[*&^]_))
    > по-моему, так куда понятнее.

    Я вот х.ею с этого блока |...|. Нет чтобы как в нормальных языках, надо обязательно вводить какую-то новую загибулину, копируя не к месту раби да смолтолк.

     
  • 2.92, Аноним (-), 17:49, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > .each |&name|

    Подражание ruby во все поля, вот только с си-подобным синтаксисом такое выглядит несколько дико.
    Для сравнения, в го для такого используется range:
    for _, v := range arr {
      // do something
    }

     
     
  • 3.113, Аноним (-), 13:59, 05/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Для сравнения, в го для такого используется range:
    > for _, v := range arr {
    >   // do something
    > }

    Как по мне тут куда менее понятно что за нафиг.

     
  • 3.116, arisu (ok), 21:40, 05/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >> .each |&name|
    > Подражание ruby во все поля

    тю. как руби красть фичи у смолтолка — так можно, а как другим у руби — так нельзя? гыг.

     
  • 3.117, arisu (ok), 21:40, 05/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Для сравнения, в го для такого используется range:
    > for _, v := range arr {
    >   // do something
    > }

    жуть какая.

     
  • 2.114, arisu (ok), 21:35, 05/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    и ведь не соврал ником: действительно, лох и есть.
     

  • 1.10, Гость (?), 20:42, 03/04/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Замечательная новость. Надеюсь кроме Гнусмаса ещё какие компании присоединятся.
     
  • 1.17, anonimous (?), 21:24, 03/04/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Интересный язык, а как оно в сравнении с Go ?
     
     
  • 2.22, BratSinot (ok), 22:11, 03/04/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    http://tinyurl.com/coayhad
     
  • 2.95, TbIK (ok), 19:47, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Их надо не сравнивать, а смешивать. Получится ржавое гумно. => не нужно.
     

  • 1.21, Аноним (-), 22:10, 03/04/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Они делают язык, который еще более  изувечен, чем C++
     
     
  • 2.29, Аноним (-), 22:55, 03/04/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    C++ идеален!!!
     
     
  • 3.34, scor (ok), 23:33, 03/04/2013 [^] [^^] [^^^] [ответить]  
  • +8 +/
    C++ изувечен идеально!!!:)
     

  • 1.23, paulus (ok), 22:19, 03/04/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    И когда нам ожидать экспериментальные сборки ff-Servo?
     
  • 1.24, Аноным (ok), 22:29, 03/04/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Замечательно, а то Мозилла одна одна-одинёшенька была против огромных корпораций с ВебКитом.
     
     
  • 2.26, runoverheads (ok), 22:49, 03/04/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    а станет одна-одинёшенька с Rust
     
     
  • 3.63, Anton (??), 06:44, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Не надейтесь, если Samsung уже портировал под Андроид, скоро будут кучи хомяков пользоваться.
     
     
  • 4.81, Аноним (-), 10:14, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Не надейтесь, если Samsung уже портировал под Андроид, скоро будут кучи хомяков
    > пользоваться.

    Этим? Хомяки?
    Вряд ли.

     
  • 4.86, sdpoufwoe (?), 14:43, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Не надейтесь, если Samsung уже портировал под Андроид, скоро будут кучи хомяков
    > пользоваться.

    Что-то смутно вспоминаю какие-то пляски Самсунга с не то Мигу нето еще с чем-то таким. Сколько всего кануло в лету? И это туда же канёт

     
     
  • 5.93, Аноним (-), 17:51, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    эти пляски называются Tizen, и никуда они не канули.
     
  • 3.118, arisu (ok), 21:42, 05/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > а станет одна-одинёшенька с Rust

    ежели гнусмас хотя бы поможет допилить rust — это уже будет очень хорошо.

     

  • 1.28, ВовкаОсиист (ok), 22:53, 03/04/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Ну наконец-то, статическая типизация. Надеюсь этот язык сможет стать альтернативой js.
     
     
  • 2.30, VoDA (ok), 23:03, 03/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    И желательно статическая типизация с проверкой совместимости типов во время компиляции ;)
     
  • 2.87, sdpoufwoe (?), 14:44, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Ну наконец-то, статическая типизация. Надеюсь этот язык сможет стать альтернативой js.

    А как же альтернатива от Google, а от MS ?!

     

  • 1.32, Аноним (-), 23:16, 03/04/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    >Samsung
    >Автоматическое управление памятью

    Ох, не отдавал бы я написание сборщика мусора ребятам из Самсунг...

     
     
  • 2.33, Аноним (-), 23:20, 03/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    You give a new meaning to сборщик мусора.
     

  • 1.41, Mr.Mistoffelees (?), 00:49, 04/04/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Rust поддерживает смесь императивных процедурных и объектно-ориентированных
    > методов с такими парадигмами, как функциональное программирование и модель
    > акторов, а также обобщённое программирование и метапрограммирование, в
    > статических и динамических стилях.

    "Я понял. Рай - это компот." (К. Чуковский, "От двух до пяти")

     
     
  • 2.51, бедный буратино (ok), 02:53, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > К. Чуковский, "От двух до пяти"

    Самая актуальная книга по опеннету :)

     
  • 2.59, Crazy Alex (ok), 04:57, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Да брешут они как собаки. Функциональщина, прикидывающаяся плюсами. Ни императива нормального (даже for нет - спасибо хоть за то, что break сделали, в отличие от скалы), ни шаблонов - та пародия, что в них есть, совершенно ужасна - в джаве и то более приличные.
     
     
  • 3.62, Аноним (-), 06:39, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    >даже for нет

    И хорошо: for, в отличие от loop (while), потенциальные грабли.

     
     
  • 4.79, Fyjybv (?), 09:45, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну грабли - не грабли, а дублирующая сущность безусловно...
     
     
  • 5.98, Crazy Alex (??), 21:35, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Плевать, что избыточная - лишь бы удобно было. На практике ортогональность больше проблем создаёт, чем пользы.
     
  • 4.99, Crazy Alex (??), 21:36, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    действительно - зачем собирать инициализацию, проверку условия и переход к следующей итерации вместе - лучше размазать в вайле.
     
     
  • 5.106, Аноним (-), 06:19, 05/04/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >лучше размазать в вайле.

    не лучше, а гибче. в сях по крайней мере...

     
  • 3.64, Аноним (-), 07:00, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    >Функциональщина, прикидывающаяся плюсами.

    Implementations.

     
  • 3.65, Аноним (-), 07:23, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > ни шаблонов - та пародия ...

    Чего-то ты подгоняешь, чувак
    [code]trait Drawable { fn draw(&self); }

    fn draw_all<T: Drawable>(shapes: ~[T]) {
        for shapes.each |shape| { shape.draw(); }
    }[/code]
    > Функциональщина, прикидывающаяся плюсами.

    На редкость прям функциональщина, ога

    [code]impl Drawable for Circle { fn draw(&self) { ... } }
    impl Drawable for Rectangle { fn draw(&self) { ... } }[/code]

     
     
  • 4.97, Crazy Alex (??), 21:34, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Я ж говорю - пародия. Ни частичной специализации, ни дефолтных параметров, ни variable-length templates, ни не-типовых шаблонных параметров...
     
     
  • 5.107, Аноним (-), 06:44, 05/04/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >Ни частичной специализации

    а чего partial specialization-то только?
    т.е. explicit specialization уже и не нужно? )
    по мне - так скорее наоборот )

     
     
  • 6.108, Fyjybv (?), 10:00, 05/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    А разве первая не частный случай второй?
     
     
  • 7.109, Аноним (-), 13:10, 05/04/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    частный случай, порой ведущий к:
    - дальнейшим трудноотлавливаемым багам в логике
    - отторжению принципа keep it simple, stupid
    - несварению некоторыми компиляторами
     
  • 3.67, Аноним (-), 07:30, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > в джаве и то более приличные.

    А Жабе сколько лет отроду?

     

  • 1.43, Аноним (-), 00:58, 04/04/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    так вот кто в скором вреиени купит мозилу
     
  • 1.61, SergMarkov (ok), 06:04, 04/04/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    хромокапец стал еще ближе..:-)
     
  • 1.68, Аноним (-), 07:55, 04/04/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ебилдов еще нет?
     
  • 1.71, noize (ok), 08:28, 04/04/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Если ВНЕЗАПНО окажется, что servo в 100500 раз быстрее других браузерных движков, то гуглу срочно придётся запиливать свой ответ на этом вашем Go. Не факт, кстати, что уже не пилят.
     
     
  • 2.72, Аноним (-), 09:11, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >Mozilla
    >быстрее

    Где-то здесь ошибка.

     
  • 2.89, Толстый (ok), 15:29, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Go убогонький язык, на нем такого масштаба софт не выйдет написать.
     
     
  • 3.94, Аноним (-), 17:58, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Go убогонький язык, на нем такого масштаба софт не выйдет написать.

    Единственное, в чём го сильно уступает тому же расту — отсутствие джинериков.

     
  • 2.91, lucentcode (ok), 17:35, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Не верю, что смена ЯП может добавить скорости их движку. А вот хорошая реализация многопоточной работы - это то, чего Firefox очень не хватает.
     

  • 1.77, Аноним (-), 09:41, 04/04/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    все эти "наш язык поддерживает функциональную парадигму" - маркетинговый буллшит. Эту парадигму может прекрасно поддерживать любой язык, потому что она реализуется на уровне прикладных библиотек :)
     
     
  • 2.100, Crazy Alex (??), 21:38, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Скорее да, чем нет, но когда эти фишки поддержаны языком и, соответственно, имеют приятный синтаксис - хорошо. А так - вон в плюсах на функторах карриинг делается, а толку - он же страшен получается.
     
  • 2.102, svv (??), 21:41, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Увы, с кэррированием и частичным применением придется поплясать с бубном на многих ЯВУ.
     

  • 1.78, Аноним (-), 09:41, 04/04/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Идет ужасная SamZilla, кто не спрятался ...
     
  • 1.90, lucentcode (ok), 17:34, 04/04/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Ждём с нетерпением. Всем верстальщикам добавится геморроя, но текущий движок Firefox не использует преимущества многопроцессорных машин в должной мере. Поэтому да здравствует новый движок!
     
  • 1.96, TbIK (ok), 20:01, 04/04/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Ребят, я вот не понимаю, причём тут вообще многопоточность?? Сейчас вы все сидите в каком-то из браузеров. Если не брать откровенно лажовый рендерер Firefox, то ВСЕ браузеры работают отлично! Я ни разу не видел, чтобы браузер "задыхался" на одном CPU, загружая его под 99%! (а ведь именно это они хотят там "наоптимизировать")
    Напрашивается вывод, что это NIH + желание контролировать продукт. Вопрос только в том, что от перемены мест лажовость разрабов не меняется и следующий продукт опять будет страдать (если вообще выйдет) каким-нть "несоответствием современности".

    Если кто помнит, мы запускали Netscape на 80386 (4 Мег ОЗУ) - никто и никогда не ныл, что "медленно" или "память жрёт". Потому что делали ПРОФЕССИОНАЛЫ. А теперь им то язык не тот, то ядер мало, то ещё что в танце мешает... лопухи.

     
     
  • 2.101, Crazy Alex (??), 21:39, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    во-первых, тупило, еще еще и как. Во-вторых - в тех нетскейпах старнички показывало, а сейчас новорят веб-приложений напихать. Ну и да, хромиум отлично умееет выжрать процессор.
     
     
  • 3.103, all_glory_to_the_hypnotoad (ok), 23:47, 04/04/2013 [^] [^^] [^^^] [ответить]  
  • –3 +/
    ну и пошли накуй такие сайты и браузеры
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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