Добавить поддержку упакованных исходных файлов

Сергей Ковалёв
Сергей Ковалёв

Добавить поддержку архивов и сжатых файлов компилятору и линковщику, что бы было можно использовать файлы прямо из архива не распаковывая их:

include.zip (внутри тысячи файлов)

src.xz

lib.tar.bz

some.hpp.gz (отдельно ужатый файл)

Это позволит уменьшить занимаемые размеры и увеличить скорость работы с библиотеками

 

-11
рейтинг
10 комментариев
yndx-antoshkka
А как вы собираетесь работать с этими файлами в програме?
yndx-antoshkka
Сергей Ковалёв
yndx-antoshkka, в какой программе? vim some.hpp.gz
В исходниках это должно выглядеть так же как и без архива
// main.cpp
#include "some.hpp"
#include "include/header.h"
...

Если лежат два и более архива с одни именем ругаться на этапе компиляции.
Сергей Ковалёв
yndx-antoshkka
Сергей Ковалёв, вы предлагаете плохую версию модулей open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4667.pdf
yndx-antoshkka
Сергей Ковалёв
yndx-antoshkka, нет я предлагаю вместо гигабайта исходников иметь 100мб
Сергей Ковалёв
croessmah
Сергей Ковалёв, но вместо 10 часов компиляции ждать 30 часов?
croessmah
Сергей Ковалёв
croessmah, Вот тут вы не правы скорость может даже вырасти.
Сергей Ковалёв
dix75
croessmah,
ну это вы махнули.
dix75
yndx-antoshkka
Сергей Ковалёв, смотрите, модуль это исходники, которые были:
1) обработаны препроцессором
2) разобраны компилятором
3) превращены в бинарное представление, удобное для использования компилятором
4) дополнительно обработаны с выкидыванием\скрытием приватных частей
5) сохранены на диск одним файлом, возможно со сжатием

Вы предлагаете только пункт 5), хотя очень много времени тратится на части 1) и 2). Часть 4) может дополнительно ускорить компиляцию и линковку. Модули так же сильно уменьшают размер объектных файлов и соответственно ускоряют время линковки.

Модули уже на подходе, скоро вы сможете ими воспользоваться.
yndx-antoshkka
d-yaroshev
Ну, кстати, если это не zip архив, а архивация знающая про компиляцию и язык, то мб может. Только мне кажется, что модули - это в тот огород. Вообще интересно - какое соотношение между размерами исходников и файлами модулей. Мб можно выкачивать только часть исходников из репозиториев? (распаковывать из архивов)?
d-yaroshev
Сергей Ковалёв
Большая часть исходников лежит не изменной и занимает много места
и представляет огромное количество мелких и не очень файлов.
Которые на диске могут храниться кластерами и не локально.
Более того большинство файловых систем не гарантируют
целостность данных.

Скопировать 100 тыс файлов по 5кб и один файл в 50Мб - есть разница?.
Даже обычный lzma может упаковать текст в 10раз.
Например один файл boost_1_64.7z занимает 67Мб
Распаковывается в 55тыс файлов и 5тыс папок.
Распакованный размер 7.4 раза больше ~500Мб
И реально в 10раз больше на диске ~640Mb

И потом еще может несколько гигов накомпилировать объектников, либ,
pdb файлов и других отходов которые упаковываются в разы.

Зачем нагружать дисковую систему если есть мощные многоядерные процессоры.
Сергей Ковалёв
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).