Alexander "SonnySlave"
http://lists.llvm.org/pipermail/llvm-dev/2018-March/121675.html
Berkus
это же контракт, и он для чего-то нужен же
Berkus
http://lists.llvm.org/pipermail/llvm-dev/2018-March/121675.html
> Clang defaults to -std=gnu++14 instead of -std=gnu++98 О ДА ДЕТКА
Berkus
> linker script and version script support has significantly improved that it should be able to handle almost all scripts.
Berkus
> Identical Code Folding (ICF) now de-duplicates .eh_frame entries о, кому там надо было .eh_frame оставлять
Berkus
> Initial version of WebAssembly support has landed. You can invoke the WebAssembly linker by wasm-ld.
Berkus
> The new builtin preprocessor macros __is_target_arch, __is_target_vendor, __is_target_os, and __is_target_environment can be used to to examine the individual components of the target triple.
Berkus
> The default value of _MSC_VER was raised from 1800 to 1911, making it compatible with the Visual Studio 2015 and 2017 C++ standard library headers плелестн
Pepe 🐸
ну одно дело когда ты параллельный алгоритм планируешь, типа обработки какого то массива, и сам разбиваешь задачу на части. А другое дело, когда какие то юзеры твою структуру юзают, типа буфера там, или я не знаю...
Berkus
https://ziglang.org фанаты гитлера выдали убийцу сишечки
Berkus
какая-то помесь раста и гошечки
Danil
Berkus
Max
Так будет компилится Hello World reichstag++ main.zig
Berkus
Так будет компилится Hello World reichstag++ main.zig
https://github.com/andrewrk/clashos/blob/master/src/mmio.zig в целом норм конечно
Egor
получился раст?
Berkus
получился раст?
это помесь раста с гошечкой д
Berkus
не совсем правда понятно НАХУЯ
Berkus
но уж ладно, если чуваки смогли в полной безвестности соорудить целый работающий язык, пусть еще чо нибудь крутое придумают а мы случайно об этом узнаем
🐙 Antony
Кстати, а давайте я и правда вечерком свяжусь с автором и предложу эту идею....
Done https://github.com/mattgodbolt/compiler-explorer/issues/312 Но я не первый был, с таким предложением
Berkus
@sergey233 все вакансии в личку @AlexFails
Vsevolod
а кто сказал, что vtune можно на халяву продлять у интела?
Vsevolod
мне они написали, мол, триал заканчивается, плати или пиздуй
Berkus
а кто сказал, что vtune можно на халяву продлять у интела?
Ну там не для всех он бесплатен вроде, почитай условия
Vsevolod
а для кого тогда?
Vsevolod
там 100500 страниц EULA
Vsevolod
поэтому я спрашиваю тех, кто писал тут
Berkus
а для кого тогда?
Студенты и фосс вроде
Vsevolod
а это был, если мне не изменяет память, @zamazan4ik
Vsevolod
ну я-то фосс по-любому
Vsevolod
только это раньше было про фосс так
Vsevolod
а теперь даже пункта такого нет
Vsevolod
и аккаунт мой старый они похерили
Berkus
Интель хуле
Tim
Ещё один вопрос по шаблонам) вот есть код. HttpServer принимает один тип - BigGraphClass, и знает он только об этом типе: HttpServer<BigGraph<int,int>> но внутри HttpServer есть HttpHandler<BigGraphClass>. И я внутри HttpHandler хочу извлечь IdClass которым инстанцирован BigGraphClass, но мне известен только BigGraphClass. Есть ли возможность его вытащить? Что-то я и так и эдак пытался, никак не выходит template<typename BigGraphClass> class HttpHandler { BigGraphClass b; // Тут я хочу вытащить из типа BigGraphClass тип IdClass и например создать поле такого типа }; template<typename BigGraphClass> class HttpServer { HttpHandler<BigGraphClass> h; }; template<typename IdClass, typename TaskClass> class BigGraph { IdClass i; TaskClass t; }; int main(int argc, char** argv) { HttpServer<BigGraph<int,int>> h; return 0; }
Aleksandr
Tim , например вот как - https://wandbox.org/permlink/Kmtem8pBHSjpaCss
Tim
не компилится в 2013й студии, пишет: 1>main.cpp(10): error C2146: syntax error : missing ';' before identifier 'i' Может тут какая-то конструкция появившаяся позже C++11? template<typename BigGraphClass> class HttpHandler { BigGraphClass b; typename BigGraphClass::IdClassT MyIdClass; MyIdClass i; // <--- сюда ругается };
Aleksandr
В примере что я кинул MyIdClass - мембер, а не тип. Надо было с маленькой буквы написать, прошу прощения.
Tim
ооо!
Tim
спасибо, милчеловек) ты меня просто спас))
Tim
блин, там если чуть изменить - уже не собирается. Такое можно починить как-нибудь? #include <iostream> #include <cstdlib> #include <typeinfo> #include <memory> template<typename IdClass, typename TaskClass, template <typename> class LoggerClass> class BigVertex { private: IdClass i; TaskClass t; public: void bar(const TaskClass & t){ LoggerClass<TaskClass>::Log(t); }; }; template<typename BigGraphClass> class HttpHandler { BigGraphClass b; typename BigGraphClass::TaskClassT t; typedef BigVertex< typename BigGraphClass::IdClassT, typename BigGraphClass::TaskClassT, typename BigGraphClass::LoggerClassT > MyBigVertex; std::shared_ptr<MyBigVertex> lp_begin; public: void handle(){ lp_begin.reset(new MyBigVertex()); lp_begin->bar(t); } }; template<typename BigGraphClass> class HttpServer { private: HttpHandler<BigGraphClass> h; public: void xxx(){ h.handle(); } }; template<typename IdClass, typename TaskClass, template <typename> class LoggerClass> class BigGraph { public: typedef IdClass IdClassT; typedef TaskClass TaskClassT; typedef LoggerClass<TaskClass> LoggerClassT; private: BigVertex<IdClass, TaskClass, LoggerClass> v; public: void foo(const TaskClass & t){ v.bar(t); }; }; template<typename TaskClass> class Logger { void Log(const TaskClass & t){ std::cout << t << std::endl; }; }; int main(int argc, char** argv) { HttpServer<BigGraph<int,int,Logger>> h; h.xxx(); return 0; }
Tim
invalid template argument for template parameter 'LoggerClass', expected a class template
Tim
я не понимаю чем отличается class от template в этом случае(
Oleg Oleg
привет, я ведущий разработчик одного высоконагруженного веб проекта, и мне нужно некий критически важний участок функционала перенести на компилируемий язык, в частности отдельные участки API системы. Я уже немного работал с C/C++, правда для микроконтроллеров, поетому мне нужна помощь, есть ли в C/C++ какие-то библеотеки, для работы с DOM, с страничками вообще, через CGI?
Tim
libxml/libxml++ умеет - скармливаешь ему html как нестрогий xml, и дальше юзаешь XPath запросы как в XML. я пару десятков сайтов им парсил - нигде он не отказывался от html) всегда съедал и отлично работал) правда его собирать запарно - там 8 зависимостей)) но можно по идее просто libxml заюзать - у него зависимостей сильно меньше.
Tim
ещё от гугла был парсер html на чистом Си (году в 2013м выходил) - но он просто строил DOM дерево. А ходить по нему нужно было самому вот этот: https://github.com/google/gumbo-parser
Oleg Oleg
спасибо, сейчас посмотрим... а есть ли для json кодирования, какие-то легковестые? ножно по максимому простые
Tim
я юзаю boost::property_tree - мне её производительности достаточно. Но может есть где бенчмарки
Tim
ну в общем они достаточно легко нагугливаются - например https://github.com/miloyip/nativejson-benchmark
Tim
RapidJSON видимо невероятно крут)
Tim
блин, там если чуть изменить - уже не собирается. Такое можно починить как-нибудь? #include <iostream> #include <cstdlib> #include <typeinfo> #include <memory> template<typename IdClass, typename TaskClass, template <typename> class LoggerClass> class BigVertex { private: IdClass i; TaskClass t; public: void bar(const TaskClass & t){ LoggerClass<TaskClass>::Log(t); }; }; template<typename BigGraphClass> class HttpHandler { BigGraphClass b; typename BigGraphClass::TaskClassT t; typedef BigVertex< typename BigGraphClass::IdClassT, typename BigGraphClass::TaskClassT, typename BigGraphClass::LoggerClassT > MyBigVertex; std::shared_ptr<MyBigVertex> lp_begin; public: void handle(){ lp_begin.reset(new MyBigVertex()); lp_begin->bar(t); } }; template<typename BigGraphClass> class HttpServer { private: HttpHandler<BigGraphClass> h; public: void xxx(){ h.handle(); } }; template<typename IdClass, typename TaskClass, template <typename> class LoggerClass> class BigGraph { public: typedef IdClass IdClassT; typedef TaskClass TaskClassT; typedef LoggerClass<TaskClass> LoggerClassT; private: BigVertex<IdClass, TaskClass, LoggerClass> v; public: void foo(const TaskClass & t){ v.bar(t); }; }; template<typename TaskClass> class Logger { void Log(const TaskClass & t){ std::cout << t << std::endl; }; }; int main(int argc, char** argv) { HttpServer<BigGraph<int,int,Logger>> h; h.xxx(); return 0; }
таки починил) если кому интересно: #include <iostream> #include <cstdlib> #include <typeinfo> #include <memory> template<typename IdClass, typename TaskClass, typename LoggerClass> class BigVertex { private: IdClass i; TaskClass t; public: void bar(const TaskClass & t){ LoggerClass::Log(t); }; }; template<typename BigGraphClass> class HttpHandler { BigGraphClass b; typename BigGraphClass::TaskClassT t; typedef BigVertex< typename BigGraphClass::IdClassT, typename BigGraphClass::TaskClassT, typename BigGraphClass::LoggerClassT > MyBigVertex; std::shared_ptr<MyBigVertex> lp_begin; public: void handle(){ lp_begin.reset(new MyBigVertex()); lp_begin->bar(t); } }; template<typename BigGraphClass> class HttpServer { private: HttpHandler<BigGraphClass> h; public: void xxx(){ h.handle(); } }; template<typename IdClass, typename TaskClass, template <typename> class LoggerClass> class BigGraph { public: typedef IdClass IdClassT; typedef TaskClass TaskClassT; typedef LoggerClass<TaskClass> LoggerClassT; private: BigVertex<IdClass, TaskClass, LoggerClass<TaskClass>> v; public: void foo(const TaskClass & t){ v.bar(t); }; }; template<typename TaskClass> struct Logger { static void Log(const TaskClass & t){ std::cout << t << std::endl; }; }; int main(int argc, char** argv) { HttpServer<BigGraph<int,int,Logger>> h; h.xxx(); return 0; }
Oleg Oleg
насколько я понял, Boost использует RapidXML, а он в свою очередь, довольно прост, и быстр, наверное, я его и выберу. + там есть и парсер json'а
Tim
так а этот RapidXML схавает html?
Oleg Oleg
так а этот RapidXML схавает html?
XML же как-то хавает
Tim
Xml очень строг к структуре. HTML же наоборот - конкуренция браузеров привела к тому, что должен хорошо отображаться даже самый кривой HTML. И это великое счастье что libxml позволяет игнорировать отсутствие строгости структуры. И я совсем не уверен что другой xml парсер сможет схавать HTML.
Oleg Oleg
Хм... Спасибо, сейчас буду далее копать
🦥Alex Fails
Alexander "SonnySlave"
🦥Alex Fails
Кек
🐙 Antony
#idea поехали пелить в github.com/procxx
Мне сначала надо разгрести накопившиеся дела. Где-то через месяц смогу заняться
Berkus
А что за байка-то
ну что 80% пользователей пользуются только 20% возможностей, но у каждого это РАЗНЫЕ 20%
Aidar
шта?!
По стандарту бул не обязательно атомарен
Aidar
Там есть atomic_flag для этого
Aidar
Который гарантировано локфри вроде
Aleksander
По стандарту бул не обязательно атомарен
И что? Автор вопроса никакой дополнительной информации не предоставил. Если учитывать только то что указано в вопросе, то никакие заморочки с синхронизацией и атомарностью, не нужны.
Aidar
Вы можете прочитать мусор по стандарту
Aidar
И насрать что у вас там на х86
Aleksander
Вы можете прочитать мусор по стандарту
Какой ещё мусор? Там будет true или false. Никакой гарантии достоверности не будет, поэтому и нет смысла заморачиваться.
Aidar
>никакой гарантии достоверности Ок