Size: a a a

Compiler Development

2020 March 04

AT

Alexander Tchitchigin in Compiler Development
Mikhail 才藤 中村 Bashurov
дак нет типов в рантайме, type erasure в деле
В JS типы == классы == функции, так что конечно есть. Куда методы-то складываются? Вот оно самое. 😊
источник

M中

Mikhail 才藤 中村 Bashurov in Compiler Development
Alexander Tchitchigin
В JS типы == классы == функции, так что конечно есть. Куда методы-то складываются? Вот оно самое. 😊
так, я кажется понял о чем вы, щас переварю
источник

AT

Alexander Tchitchigin in Compiler Development
Mikhail 才藤 中村 Bashurov
так, я кажется понял о чем вы, щас переварю
👍
Но я идею "на вскидку" выдумал и не прорабатывал. Может и не работать. Но может сработать какое-то её развитие.
источник
2020 March 05

BD

Berkus Decker in Compiler Development
Алексей
а на мой взгляд и :: уже лишнее
c++ практически невозможно парсить однозначно, поэтому любая помощь парсеру приветствуется, :: сложно спутать с чем-то другим
источник

DF

Dollar Føølish in Compiler Development
Да, ето так
источник

DP

Dmitry Ponyatov in Compiler Development
по реализации динамических объектных языков на MLIR что стоит глянуть?
источник
2020 March 07

МБ

Михаил Бахтерев in Compiler Development
Mikhail 才藤 中村 Bashurov
А что почитать на тему реализации аналога темплейтов в транспилируемом языке?
то есть скажем берем типизированный жс

import { validate } from ‘my-module’

type User = { id: number }

validate<User>({ id: “1” })


мой визитор находит вызов моего же validate и подменяет на

import jsonValidator from ‘json-validator’

function validate_User(obj) {
 return jsonValidator({
   id: “number”
 }).validate(obj)
}

validate_User({ id: “1” })


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

import { validate } from ‘my-module’

type User = { id: number }

function foo<T>(obj) {
 return bar<T>(bar)
}

function bar<T>(obj) {
 return validate<T>(obj)
}

foo<User>({ id: “1” })


можно ли это сделать за один проход (за один визитор) или хотя бы гарантированно за два (но не на n)
и что покурить (я плохо секу в теории)
Это, по-нормальному, делается не через visitor. Точнее, не только через visitor. При проходе по тексту или AST составляется система ограничений на типы, а потом она решается. В ответе будут необходимые значения для всех переменных.

Тонкости возникают для разных языков в том, как именно типы выводятся. Может и экспоненциальный алгоритм получиться. С этим надо осторожнее быть. Если не хотеть чего-то особенного, то решаются системы ограничений, обычно, за O(n)

Подробности есть в TAPL, в DCPL, в Основаниях Языков Программирования, в описание алгоритма InsideOut(X).
источник

DF

Dollar Føølish in Compiler Development
Можно вопрос от нуба? Зачем гцц использует rtl схему в качестве одного из представлений? Что это даёт?

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

МБ

Михаил Бахтерев in Compiler Development
Dollar Føølish
Можно вопрос от нуба? Зачем гцц использует rtl схему в качестве одного из представлений? Что это даёт?

Вроде понятно бы было,если бы схема была комбинационной, ну или с обратными связами. Но rtl не пойму зачем...
Это не то же самое RTL, что в цифровых схемах
источник

DF

Dollar Føølish in Compiler Development
Понятно, спасибо
источник

МБ

Михаил Бахтерев in Compiler Development
Просто описание кода для некоторой абстрактной регистровой машины.
источник

M

MaxGraey in Compiler Development
источник

C

Constantine in Compiler Development
источник

A

Alex Ф-ф-фэils!🌠︙ in Compiler Development
Anna Perova Headhunter
Коллеги, привет! 🚀У нас есть крутая вакансия:
Lead Compiler Developer 💎🎖🧲в  Consumers business group Huawei в Москве.

Требования:

🔺Обязателен опыт разработки компиляторов
🔺уверенное знание С++ и/или Java.
🔺Опыт с JVM, LLVM приветствуется.
🔺Желателен опыт разработки динамического компилятора. 🚀
🔺Опыт работы: от 5 лет.
🔺В данной команде открыто 10 вакансий (если у вас опыт меньше 5 лет, все равно присылайте, CV, возможно мы найдём подходящие и интересные задачи и для Вас)

Условия:

🔺Высокие зарплаты (в среднем выше рынка), возможен sign-in bonus, годовые бонусы за результат.

🔺Сильная команда из Intel, Soft Machines и др.

🔺Комфортный офис на м.Динамо (в офисе регулярно проходят ивенты, митапы, мероприятия, friday beer на 1 этаже, Monday 5 o’clock tea.). Возможен переезд офиса на м.Арбат в апреле.

🔺Возможны международные командировки, возможность заниматься исследовательской и преподавательской деятельностью при МФТИ.

🔺Пишите мне, если интересно, дам больше деталей.

♦️🚀Вакансии срочные, будем рады пригласить вас на интервью или неформальную встречу, в самое ближайшее время⏱

CV присылайте на: Anna.perova@huawei.com

Или мне в телеграмм: +79031827484 Анна 🎯

*Извините, если оффтоп, очень нужно (!)
Если актуально ещё, в канал вакансий скину
источник
2020 March 08

M

MaxGraey in Compiler Development
источник

AZ

Alexander Zaitsev in Compiler Development
источник

E

EgorBo in Compiler Development
For Intel AVX-512 CPUs, -mprefer-vector-width=256 is now the default behavior for limiting the use of 512-bit registers due to the AVX-512 downclocking that can occur.

ну так-то и операции над 256битными векторам вполне понижают частоту -_-
источник

DF

Dollar Føølish in Compiler Development
Кстати да, тоже такое слышал
источник

E

EgorBo in Compiler Development
хотя этот фикс 100% для бенчмарков, где ты долбишь один и тот же код и не хочешь чтобы цпу троттлил и гцц не стал быстрее -_-
источник

E

EgorBo in Compiler Development
Dollar Føølish
Кстати да, тоже такое слышал
там грубо говоря три группы инструкций, есть те, которые не напрягают процессор, аля сложить 2 вектора, а есть те от которых он сильно потеет (всякие сложные перестановки и т.п.)
источник