Matway
Это ж надо глобальную хеш-таблицу держать
Да. Это было бы бессмысленно, если у тебя динамически генерились бы строки, у которых высокий коэффиент уникальности. В компиляторе это не так. В твоей задаче - я не знаю.
Berkus
Мы уже хотим. Нужно просто понимать, что это большая ответственность. Одно дело, когда ты пишешь код для трёх человек, которые у тебя в офисе. Не нужна нормальная дока, комментарии, поддержка. Можно сосредоточиться на качестве (которое качество работы продукта). Опенсорс - это сразу куча дополнительной работы.
ну то есть вам надо придумать инфраструктуру контрибутинга в ваш проект - вы же хотите контроль над тем как он развивается, то есть steering committee, но при этом надо чтобы пул реквесты быстро обрабатывались, доки писались и принимались быстрее чем вы пишете новый код, такое
Matway
прямо вот рвет плюсы, да?
По тем метрикам, которые важны нашей компании (простота меты и производительность результирующего кода) - да, рвёт.
Vladislav
В компиляторе почти все строчки - подстроки нескольких больших, по идее
И string_view должно быть ещё быстрее интернирования
Matway
предположу что их нет
Совершенно верно. Язык делался для нас. Мы внутри компании полностью перешли на него с плюсов.
Andrei
В компиляторе почти все строчки - подстроки нескольких больших, по идее
У нас несколько нестандартный язык. В общем не всё так просто :)
Andrei
Да.
Matway
Конечно. 21 век не дворе.
Matway
Вы ведь его заопенсорсите?)
Когда поймём, что сможем это потянуть. Мы работаем над этим.
Andrei
Вы ведь его заопенсорсите?)
Не знаю. Я если честно не верю в идеалы открытого ПО. Но, видимо в каком-то виде -- да.
Vladislav
Некоторые алгоритмы из стандартной библиотеки с -O3
Стандартная библиотека в плюсах -говно, самописные алгоритмы их тоже часто рвут
Matway
Собственно штука, с которой начался разговор: —- Interner.h —- #pragma once #include "Ptr.h" #include "muteWarnings.h" #include <unordered_set> #include "unmuteWarnings.h" template<class T> class Interner { public: Ptr<const T> operator()(T&& value) { return {&*values.insert(std::move(value)).first}; } private: std::unordered_set<T> values; }; —— Не смотрите, что мала. Эта штука спасает жизни.
Andrei
Окей. Но это как минимум показатель.
Vladislav
Не знаю. Я если честно не верю в идеалы открытого ПО. Но, видимо в каком-то виде -- да.
Для языка - отсутствие коммьюнити это смерть, давно проверено
Matway
muteWarnings/unmuteWarnings - наш способ писать с /wall и при этом не плеваться от вонингов в STL.
Berkus
#include "muteWarnings.h" ауч, а стл у вас какой- libc++?
Matway
--- Ptr.h —- #pragma once #include "muteWarnings.h" #include <functional> #include "unmuteWarnings.h" template<class T> class Ptr { public: constexpr Ptr() noexcept : value() {} constexpr Ptr(T* value0) noexcept : value(value0) {} constexpr operator T*() const noexcept { return value; } constexpr T* operator->() const noexcept { return value; } private: T* value; }; namespace std { template<class T> struct hash<Ptr<T>> { size_t operator()(Ptr<T> pointer) const noexcept { return std::hash<T*>()(pointer); } }; }; —-
Matway
Это вообще просто эмулятор указателя. Нужна только для того, чтобы в Visual Studio писать хитрый natvis для указателей разных типов.
Berkus
но идея заопенсорсить проект прямо в чятике интересная!
Matway
--- Ptr.natvis —- <?xml version="1.0" encoding="utf-8"?> <AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010"> <Type Name="Ptr<*>"> <DisplayString>{*value}</DisplayString> <Expand> <ExpandedItem>value</ExpandedItem> </Expand> </Type> </AutoVisualizer>
Matway
#include "muteWarnings.h" ауч, а стл у вас какой- libc++?
Кросс-платформенный :) LLVM-ная библиотека тоже ругается будь здоров :)
Berkus
да я тут пытаюсь буст и кутэ собирать в -wall -wextra знаю да - говнокода там порядочно
Vladislav
C*=2
Berkus
C_
Matway
*внимательно слушает и записывает*
Berkus
но я надеюсь что он с хаскелевым синтаксисом вообще
Andrei
Написал ради интереса часть Parsec-а
Andrei
В общем можно писать как императивно, так и декларативно.
Andrei
И с зависимыми типами!
Ты вот сейчас думаешь, наверное, что пошутил :D
Vladislav
И с зависимыми типами!
Ну правда, пора уже их в мейнстрим тянуть
Andrei
А на самом деле они в роадмапе есть.
Vladislav
Ты вот сейчас думаешь, наверное, что пошутил :D
Пошутил, но с надеждой на долю правды)
Andrei
Пошутил, но с надеждой на долю правды)
Оказался прав. Мы на них облизываемся с самого начала.
Vladislav
Berkus
это неплохо да
Vladislav
Блин, мне теперь очень хочется на это посмотреть. Может возьмете меня в команду удалённо кем-нибудь?)
Andrei
Тебе фейсбука мало? :D
Berkus
в фейсбуке ж пехапе
Berkus
скучна)
Vladislav
Тебе фейсбука мало? :D
У нас только унылые языки пилят, хак да jsx с flow всякие(
Matway
Блин, мне теперь очень хочется на это посмотреть. Может возьмете меня в команду удалённо кем-нибудь?)
Мы планируем этим летом набирать фокус-группу, на которой можно испытывать язык. Терпимость к... Радикальным переменам приветствуется. Ко мне в приват, пожалуйста.
Matway
это единственное требование?
Сложно требовать чего-либо от людей, которым ты суёшь продукт без документации.
Dmitry
передавать шаблонным параметром тип со спецификатором практикуется где-нибудь? MyTemplat<const MyType&>::
Vladislav
можно, но зачем?)
в туплы, например
Dmitry
можно, но зачем?)
и мне интересно - зачем
Dmitry
в туплы, например
и в туплы зачем
Vladislav
чтобы не копировать там, где копирование не нужно
Dmitry
ещё интересно - где конкретно
Vladislav
или там, shared_ptr<const Smth> для shared_ptr'а на константный объект
Arseny
и в туплы зачем
Например, чтобы сохранить список аргументов функции для отложенного вызова.
Vladislav
или там, shared_ptr<const Smth> для shared_ptr'а на константный объект
у нас в кодовой базе это самый популярный юзкейс по запросу "<const "
Matway
Опенсорсить не готовы или вообще делиться. Если первое — пусть желающие (лабораторные кошки) подпишут NDA
Очень грамотно. Спасибо. Есть две части, и у них разные причины не опенсорсить прямо вот сейчас - Спецификация языка, референсный интерпретатор, та часть, где оно лучше Питона, вот это всё - это должно стать достоянием общественности, и единственная причина, почему ещё не - оно не доведено до того состояния, когда не стыдно - Та часть, где оно лучше плюсов, оптимизирующий компилятор, который может оптимизировать гораздо круче, чем ICC - это имеет вполне ощутимую коммерческую ценность, и туда можно только с NDA
Matway
раст выкладывать стали сильно до того, как он дошел до состояния "не стыдно" :)
Ты так говоришь, словно это что-то хорошее :) А если серьёзно, там это было оправдано. Мозилловское коммьюнити помогло двигать проект. Нам сейчас активное коммьюнити скорее помешает.
Artem
я правильно понял, что без модулей обошлись в языке?
Artem
Надеюсь)
но почему
Stanislav
я правильно понял, что без модулей обошлись в языке?
про какой язык речь? я тут слегка пропустил
Artem
про некий с++-подобный язык без имени
Andrei
Про тот, который мы с Матвеем делаем.
Vladislav
но почему
Ой, прочитал что не обошлось
Andrei
C++бесподобный.
Stanislav