LINUX.ORG.RU

Царю про 10к в надежде перевести дискуссию в конструктив

 ,


11

10

Я не думаю, что кого-то можно впечатлить принципиальной возможностью запустить 10к потоков для обслуживания клиентов. Когда говорят про встанет раком, имеют в виду неоправданную потерю производительности.

Если ты готов померять реальный перформанс, пиши, я налабаю на еполле аналоги твоих тестовых серверов, чтобы не ты один тратил своё время. Меня например больше в всего в контексте этого спора интересует, как поведёт себя сервер с 10к потоков например на 4 ядрах против еполльного на одном таком же ядре, в вариантах без локов и с.

Результаты исследования можешь запостить на ЛОРе и восстановить честь среди пятизвездочных 😝

Начало дискуссии где-то рядом в удаленных по инициативе какого-то наркомана.

PS скорее всего я отвечу не раньше ночи или следующего утра.

★★★★★
Ответ на: комментарий от eao197

Я просил конкретные слова, которые ты считаешь, что не принадлежат тебе. Конкретно, с чем ты несогласен.

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

Я тебе дал ссылку на поток сознания, в котором ты навыдумывал практически все. Если не навыдумывал, то подтверждай ссылками и цитатами.

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

Ты это о чём вообще? Зачем им его вообще осиливать, если он скрыт под абстракциями?

А кто его будет использовать? Ваятели либ. А ваятели либ кто? Такое же как и не ваятели. У них такой же анскилл и жсончик головного мозга.

Т.е. им нужен интерефейс на жсончике, а это сводится к тому, что на уровне броузера должна быть нормальная реализация и поверх неё слой совместимости с анскиллом на жсоне.

Но почему-то это никто сделать не может и причин я не знаю.

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

Я ещё спрошу. Ты там нашёл что-то, что несоответствует твоим словам. Я жду примеры. Что именно не соответствует. А так, я пока что вижу одно - ты балаболишь. Если нет - предоставляй доказательства.

«я так сказал» - это не доказательство.

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

Тот, кому нужны такие банальные вещи как: to_upper, to_lower, trim, split, substring, start_with, end_with, contains. И что бы это не только с ascii работало.

Это нужно не всем :-) Но даже часть этого есть в стандартной библиотеке :-) basic_string отличается от vector тем, что первый зависит от характеристик символов, а второй - нет :-) Это позволяет для basic_string определять конверсии из UTF-16 в UTF-8 (есть в стд. библ.) без доп. аргумента о характеристиках, который нужно было бы передавать отдельно в классы конверсий :-)

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

А ваятели либ кто? Такое же как и не ваятели. У них такой же анскилл и жсончик головного мозга.

А если нет? Допустим, условный гугл проникся данным протоколом и нанял несколько скилованных чуваков за дохрена денег для разработки реализации протокола. Причём так, чтобы потом любая макака могла его использовать после определённой дрессировки.

Но почему-то это никто сделать не может и причин я не знаю.

Потому что никому не нужно, очевидно.

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

Ну, например.

Ты выдумал какую-то хрень с «будет много перключений», но это не ответ.

Давай ссылку и цитату.

Я жду примеры.

А ты не жди, ты когда человеку что-то предъявляешь, то не выдумывай за него ничего.

«я так сказал» - это не доказательство.

А до тебя это когда дойдет, придурок? Вот, например:

Идём далее, убогие потуги про «обработка внутри тредов повлияет на что-то». Не повиляют.
Любая, дополнительная, работа внутри треда( которая там вообще быть не обязана - об этом я писал выше. В данном ситуации балабол уже слился, но я просто позволяю ему балаболить) ни на что не повлияет. И причина проста.
Вставляя работу между блокировками - мы просто позволяем треду больше исполнятся. Это ни что не влияет.

Вот это вот «не влияет» — это чем-то отличается от «я так сказал»?

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

Я не пойму зачем для этого отдельный тип заводили? Вон в rust не парились. Там String - это тупо Vec<u8>. И всё остальное навешено поверх.

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

Альтернатива крестам?

нет, я этого не говорил. даже автор этого не говорил. Это всего лишь недоделаный прототип с интересной идеей.

Т.е. это по твоему язык?

Может ты в этом куске кода видишь что-то, что мешает ему быть языком?

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

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

Я не пойму зачем для этого отдельный тип заводили? Вон в rust не парились. Там String - это тупо Vec<u8>. И всё остальное навешено поверх.

Rust - молодой язык :-) Много чего было переосмысленно :-) В C++ basic_string делали для возможности различных оптимизаций :-) Раньше basic_string был COW-типом (copy on write) :-) И стандарт не гарантировал, что память должна выделяться одним куском :-) Похоже, были фантазии на счёт каких-то супер-пупер эффективных алгоритмов именно для строк :-) Время прошло, легаси осталось :-) Сейчас же basic_string уже не COW и память гарантированно (пере-)выделяется одним куском :-) (Хотя непонятно при этом, почему нельзя писать в память, на которую указывает data(), что запрещено стандартом :-) Вот это действительно странно :-) Кстати, это и вектора касается :-) Лол :-)) :-)

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

Хотя непонятно при этом, почему нельзя писать в память, на которую указывает data(), что запрещено стандартом

В С++17 std::basic_string::data() уже не const, и возвращает уже неконстантный указатель.

http://en.cppreference.com/w/cpp/string/basic_string/data

Кстати, это и вектора касается

Пруф?

http://en.cppreference.com/w/cpp/container/vector/data

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

В С++17 std::basic_string::data() уже не const, и возвращает уже неконстантный указатель.

Наконец-то в 2017 году до них дошло :-) Целых 20 лет понадобилось, чтобы снять const-тантность с возвращаемого указателя :-) Долгий путь был проделан :-) Спасибо тебе, Женя :-) Правда, я не знал :-)

Пруф?

Ах да, я не прав :-) В цепепе-11 уже не const :-) Понадобилось 13 лет :-)

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

Ну правильно, проблема из-за хранения строк в разных локалях. Храните в одной локали, если не хочется таких проблем.

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

реально интересно - как это. растолкуешь ламеру?

Очень просто. Сокеты - это просто интфейс и не более того. Интерфейс доступа к паре буферкам.

Ущербность его заключается в следующем - копирование дожопы данных между ядром и юзерспейсом. Переключение в пространство ядра так же не бесплатно. Размазывание данных по сотням мегабайт внутри ядра.

Что из себя представляет тот же уровень ip? Это поток пакетов. Какая там нужна обработка? Никакая. Что из себя представляет тот же уровень tpc? Это такой же поток внутри тел потока покетов. Что из себя представляет его обработка? Контекст + некая логика. Контекст создаётся при соединении. Далее просто просто все входящие пакеты адресуются по этим контекстам через порты. Вся эта логика выплёвывает новый поток данных - это потом данных внутри тцп.

Ну дак вот этот поток данных идёт в сокеты. А зачем ему идти в сокеты, если он может идти к тебе в программу потоком вида, допустим, {port, len, data...}?

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

К тебе пришёл поток данных - ты получил поток данных.

В реальном мире - обработка самих tcp пакетов является каплей в море. Всё, во что сейчас упирается обработка tcp-соединений - это сокеты.

То же самое и с записью.

Подобный механизм уже есть - тот же епул. Он реализует всё то же самое, только он работает на с данными, а с евентами. Именно он и позволяет сокетам хоть какую-то производительность показывать.

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

о, спасиб.

то все понятно. мне непонятно в части именно в части «напиши свой tcp-стэк без сокетов». вот с какого тут конца браться?

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

Храните в одной локали

И эта локаль UTF-8. Все остальные идут лесом.

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

Раньше basic_string был COW-типом (copy on write)

Только в GCC, не?

Хотя непонятно при этом, почему нельзя писать в память, на которую указывает data()

Хз. В Rust тоже нельзя.

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

Может ты в этом куске кода видишь что-то, что мешает ему быть языком?

Я вижу в авторе адепта жабаскрипта поперёк с паскалем, который кроме хипстоты в этом мире нихрена не осилил.

Что мешает ему быть языком? Логика. Если я вижу идиотию даже на уровне синтаксиса - мне этого достаточно для определения автора тем, кем он является. А если он является тем, кем он является - он просто неспособен на вменяемость.

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


const io = @import("std").io;//убожество номер раз - шизофрения с константами. 
//Шизофрения номер два - бездарные символы, которые не имеют смысла.
//Шизофрения номер три - строки. Строки - убогий признак самого днища. Ни в каком вменяемом язык строк быть не должно.
//Шизофрения номер четыре - рантайм дерьмо вместо хедеров. Нище объясню в чём проблема.
const a_number: i32 = 1234;//убогая паскалятинка в типах. Никакой вменяемый человек этим дерьмом пользоваться не будет. Подобная система записи типов является неполноценной. 
const a_string = "foobar";

pub fn main(args: [][]u8) -> %void {// Ущербанское fn - признак явной альтернативной одарённости. Любая фикция имеет уникальную синтаксическую сигнатуру и в дополнительном пояснении не нуждается. Если язык для "одуванчиков" - надо сразу об этом сообщать.
// Убогие неведомые днищесимволы, которые тут нахрен не упали. 
    %%io.stderr.printf("here is a string: '{}' here is a number: {}\n", a_string, a_number);// очередные убогие днищесимволы
}

По поводу «нету хедеров». Любая реализация языка должна по умолчанию мочь дать все сигнатуры и весь код, который вызывается. Если используются модули, то язык должен иметь полный контекст и мочь прозрачно его транслировать в текст, в код.

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

Точно так же, как язык должен уметь полностью интегрироваться в редактор. Я пишу код - мне не упало следить за тем где и что я неверно поставил, а так же что и где вызывается, а так же что и где как называется.

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

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

В конечном итоге программа - это то, что породил мой компилтайм-код вместо с результатом компиляции рантайм-кода.

Таким образом я могу писать части языка на языке, которые будут полностью полноценны. Я могу писать любые обработки над типами и другими конструкциями языка внутри языка.

Таким образом на самом деле даже язык не нужен - нужен просто инструмент, который позволяет делать хоть что-то - остальное - это всё логика самого языка.

И вот этот инструмент - это и есть язык.

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

Два вопроса:

1) Что, по твоему мнению, не так с С? 2) Если ним хоть что-то не так, как бы ты сделал иначе?

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

лол. царевна как обычно нихера не поняла, но сделала вывод. Прям пробил очередное свое днище.

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

По сути все твои притензии к синтаксису, пунктуации и непонятным символам. А это вкусовщина, и меня не интересует, мне важен смысл который за ними стоит.

Таким образом я могу писать части языка на языке, которые будут полностью полноценны. Я могу писать любые обработки над типами и другими конструкциями языка внутри языка.

Это именно то что пытается сделать автор. И printf тут как пример того что в других языках свой собственный хороший компайлтайм printf хрен напишешь, а тут можно.

По поводу строк - строка это признак неосиляторства.

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

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

Царь как обычно прикопался к тараканам в своей голове, тем не менее, синтаксис у zig реально странный.

Вот что такое %%? В доке ответа не нашел. Зачем перед типами писать %?

Тем более сам компилятор написан на каких-то адовых плюсах.

https://github.com/zig-lang/zig/blob/master/src/parseh.cpp#L165 - это же сишка чистой воды.

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

По сути все твои притензии к синтаксису, пунктуации и непонятным символам. А это вкусовщина, и меня не интересует, мне важен смысл который за ними стоит.

Неверно. Это не вкусовщина. Если автор использует подобное - ты знаешь кем автор является. Поэтому можешь спокойно приходить туда через пару лет - там будет ноль.

Это именно то что пытается сделать автор.

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

Допустим - свойствами той же либшланг.

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

Где код сгенированный этой лапшой? Я его не вижу, а раз кода нет - автор аудиторию держит за идиотов. Этого достаточно.

pub fn printf(self: &OutStream, arg0: i32, arg1: []const u8) -> %void {
    %return self.write("here is a string: '");
    %return self.printValue(arg0);
    %return self.write("' here is a number: ");
    %return self.printValue(arg1);
    %return self.write("\n");
    %return self.flush();
}

Как я понял - это и есть твой рантайм? Пощады. Я такой и на сишке писал.

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

Всё просто - модули это то, что экспертируется внутрь языка рантаймом компилятора.

Таким образом имена модулей должны быть объектами языка, а не убогой рантайм строкой.

Плохи не строки, а то, что из них следует. Это значит, что это io - является убогой рантайм лапшой, которая связывается в рантайме через убогую строку.

Это 77год. Даже наверное 66.

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

Это значит, что это io - является убогой рантайм лапшой, которая связывается в рантайме через убогую строку.

А когда ты в плюсах пишешь

#include "my_super_header.hhhh"

Это тоже в рантайме связывается? Как такое можно вообразить вообще. Строка там нужна для того чтобы указывать название файла с исходником `io.zig` для компилятора, и это имя файла может содержать спец сиволы, потому и нужны кавычки.

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

Ты выдумал какую-то хрень с «будет много перключений», но это не ответ.

Царю про 10к в надежде перевести дискуссию в конструктив (комментарий)

Ибо вот, например, что я вижу:

Вставляя работу между блокировками - мы просто позволяем треду больше исполнятся. Это ни что не влияет. Единственное, что может влиять на это - это если поток будет стопаться тиком шедулера, но они настолько редки, что этого ни на что особо не повлияет.

Здесь явно говорится о переключениях тасков и о том, что их будет мало.

Твой ответ:

Это утверждение прямо противоречит здравому смыслу и объективным наблюдения

Если ты начнёшь пытаться сливаться на то, что это относилось к: «ни на что не повлияет.», то это не сработает. Ведь под моим «не повиляет» стояло то, что я цитировал выше. А именно «мало переключений». Опровергая моё «не повлияет» - ты так же автоматический опровергаешь все мои доводы за. О дин из них «мало переключений».

Он так же содержит:

переключение тредов

Т.е. ты понял, о чём там писалось.

Таким образом я сказал, что переключений тредов будет мало - ты сказал, что это не так. Из чего следует, что ты утверждаешь обратное. Всё просто.

Вот это вот «не влияет» — это чем-то отличается от «я так сказал»?

Там ниже есть подтверждение. Я назвал причину, которая может повилять. А так же назвал причину по которой эта причина будет влиять мало.

Поэтому, ты либо называешь иные причины( в рамках темы, а не в рамках ренстрансляции шизофрении) и так же объясняешь как они повлияют на исполнение.

Так же ты можешь опровергнуть моё объяснение того, почему «переключений будет мало». Можешь писать - почему их будет много, либо писать почему я не прав. Всё просто.

За твоими же утверждениями ничего нет. А тем мифы, что ты ретранслируешь - я знаю и без тебя. Особенно касательно того, как ты не отличаешь активные и неактивные потоки. Рассуждая об их вилянии.

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

Строка там нужна для того чтобы указывать название файла с исходником `io.zig` для компилятора, и это имя файла может содержать спец сиволы, потому и нужны кавычки.

Это неважно. Важно то, что из себя представляет импорт и что он импортирует. Это чистый инклюд, пусть даже и чутка предкомпиленный и компилятор собирает вместо с main.zig так же io.zig?

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

Ой как распитушился. Я тебе ничего не обязан отвечать. Я уже хотел ответить. Иди покурекай обратно в курятник. Как отпустит - приходи.

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

Ой как распитушился. Я тебе ничего не обязан отвечать. Я уже хотел ответить. Иди покурекай обратно в курятник. Как отпустит - приходи.

Создаётся впечатление, что кококо делаешь только ты. Я, конечно, надеялся на долю конструктива, но ты только умеешь метать говно, сам ты бесполезная лалка, которая от горя может газифицировать лужи на форуме

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

Лол. Царевна увидела кавычки и решило что это рантайм. Обезьянку всю жизнь кормили желтым бананом и теперь обезьянка считает что все желтое есть банан. Днище такое днище

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

Да что там другой яп - он даже с тем, с которым давно знаком не может справиться.

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

Только в GCC, не?

Ещё и в стандартной библиотеке от Apache :-) Но важно не это :-) Важно то, что стандарт не накладывал ограничений на писателей компилятора и стандартной библиотеки, позволяя реализовать COW :-) Теперь это уже не так :-)

Хз. В Rust тоже нельзя.

А в крестах уже можно :-) Начиная с цепепе-17 :-) Женя подсказал :-)

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

Я не знаю делает ли импорт предкомпиляцию, или нет, но я заметил что с собаки начинаются функции которые ты вызываешь у компилятора во время компиляции.

Ты пишешь код который управляет процессом компиляции и приказываешь компилятору какой файл импортировать. Я думаю можно даже во время компиляции составить эту строку из частей в зависимости от окружения при сборке. и ненадо никаких #ifdef

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

вот с какого тут конца браться?

Нужно определиться на каком уровне это реализовывать. Если поиграться и почитать/пописать покеты руками - есть равсокеты.

А так, задача требуется проброса «сетевухи»-её буфера в юзерспейс, если нужно реализовать что-то близкое к зерокопи. Я вроде как видел что-то подобное, но чёто оно не особо гуглится. Есть вроде нативный packet_mmap.

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

Я не знаю делает ли импорт предкомпиляцию, или нет, но я заметил что с собаки начинаются функции которые ты вызываешь у компилятора во время компиляции.

Я это и не спрашивал - это неважно. По поводу собаки - то, что функция вызывается «во время компиляции» из этого ничего не следует. Она может делать всё что угодно. Допустим - собрать объектник из файла и получить его имя.

Нужны доказательства того, что именно инклюд.

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

что-то близкое
Я вроде как видел
но чёто оно не особо гуглится.

Это все что нужно знать про царевну. Школота, мля, нихера и е знает, но всюду лезет.

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

Какой с тобою может быть конструктив? Да и вообще, шлангер, ты до сих пор ссышься под учёткой зайти?

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

Это все что нужно знать про царевну. Школота, мля, нихера и е знает, но всюду лезет.

Уважаемый мусор, с какого хрена я должен знать какие-то левые проекты, которые реализуют то, что описал я?

С какого хрена я так же должен идти и долбить в гугл, вспоминая, что именно я видел несколько лет назад?

Хотя что и зачем я с балаболящего мусора спрашиваю.

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

Какой с тобою может быть конструктив? Да и вообще, шлангер, ты до сих пор ссышься под учёткой зайти?

Ты не понял. С ТОБОЙ какой может быть конструктив? Допустим, я зайду под учёткой. Ты на вопросы сможешь ответить или будешь дальше шланговать?

Хотя стоп. Ты же шланг по определению. Ты вообще ни строчки кода по делу не написал, ибо ты не разработчик - ты демагог.

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

Потому что ты трепло вскукареунул с советом, в теме в которой ты нулина полная(как это неожиданно!!!111). Но ответить даже за свой всеукарек не смог.

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

Ты не понял. С ТОБОЙ какой может быть конструктив? Допустим, я зайду под учёткой. Ты на вопросы сможешь ответить или будешь дальше шланговать?

Да уже твоих повадок, крысятских, достаточно. Убогая балаболка.

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

Хотя стоп. Ты же шланг по определению. Ты вообще ни строчки кода по делу не написал, ибо ты не разработчик - ты демагог.

Меня не интересует классификация от всякий нонейм балаболов. Балаболить ты можешь сколько угодно - мне насрать.

Мне не вы, ни ваш форум нахрен не упёрся. Хотят пацаны давать ресурс подобным персонажам - пожалуйста. Сами превращают форум в помойку.

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

Царь.

О боже, ну что за идиот. Пощадите меня. Тебе задали конкретные вопросы - ты продолжаешь нести херню. Отвечай, либо выпиливайся из треда.

Опять этого идиота кто-то сюда призвал. Предсказываю выпил темы на следующей странице.

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

Да уже твоих повадок, крысятских, достаточно.

Каких? Ссылку на крысятские повадки давай.

Естественно ясно и понятно, что ты провоцируешь срачь.

Неа, я изначально вполне ясно и понятно давал понять, что меня интересует твоё мнение о сишке, а не о каком-то хипстерском недоязыке, который ты успел обосрать еще ДО меня. Но вместо этого ты упёрся в «я никому ничего не должен».

ёпт, ты на форуме - тут никто никому ничего не должен. Хавальник закрыл и свалил оттуда, где тебе не нравится.

Скорее всего тебя какой-то балабол уже призвал.

Нет, всё было совсем иначе. Я понял, что от тебя по делу ни строчки кода добиться нереально, но тем не менее у тебя очень хорошая теоретическая база и ты неплохо понимаешь что происходит как в чужом коде, так и на уровне железа. Подумал, вдруг ты пацан нормальный, у тебя хотя-бы можно спросить (даже не совета или консультации!) а хотя-бы мнение. А ты сразу начал строить из себя девственницу-недотрогу.

Мне не вы, ни ваш форум нахрен не упёрся.

ну так вали нафик отсюда

Хотят пацаны давать ресурс подобным персонажам - пожалуйста

какие пацаны? на личности только ты переходит заставляешь. Зайди в техразделы форума и почитай как там общение в темах происходит. У тебя помимо проф. навыков нет даже банального навыка общения. Я видел подобных пациентов, когда еще учился в медвузе - обычно у таких людей проблемы в семье.

Тебя били в детстве?

Сами превращают форум в помойку.

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

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

Нужны доказательства того, что именно инклюд.

Можно показать что точно не обьектник:

Создаем файл `geez_x_geez.zig`

pub const x = "I'm here";
Создаем файл `foo.zig`
pub fn hello(comptime a: []const u8) -> []const u8 {
   return a ++ "_x_" ++ a;
}
Создаем файл `main.zig`
const foo = @import("foo.zig");

const file = foo.hello("geez") ++ ".zig";

const x = @import(file).x;

pub fn main() -> %void {
    const io = @import("std").io;
    %%io.stdout.printf("x: '{}' from file '{}'\n", x, file);
}

Компилируем, запускаем выводит

x: 'I'm here' from file 'geez_x_geez.zig'

Если удалить файл geez_x_geez.zig, то при компиляции получим ошибку:

main.zig:5:11: error: unable to find 'geez_x_geez.zig'
const x = @import(file).x;
          ^

pftBest ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.