The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Прекращена разработка библиотеки управления памятью jemalloc

13.06.2025 23:21

Автор библиотеки управления памятью jemalloc объявил о прекращении разработки проекта и перевёл GitHub-репозиторий в архивный режим, допускающий доступ только для чтения. Библиотека jemalloc предлагала альтернативную реализацию функций malloc, оптимизированную для снижения фрагментации и работы на многопроцессорных системах. В 2005 году библиотека была включена в состав FreeBSD, а в 2007 была задействована в Firefox.

В 2009 году автор jemalloc перешёл на работу в компанию Facebook, в которой данная библиотека использовалась во внутренних проектах. В 2017 году автор jemalloc уволился из Facebook, а разработка была продолжена оставшейся командой из Facebook. После переименования в Meta приоритеты компании изменились, развитие библиотеки застопорилось и разработка сосредоточилась только на внутренних потребностях. Общедоступная кодовая база со временем деградировала и для устранения накопленного технического долга теперь требуется проведение значительного рефакторинга. Автор jemalloc не готов тратить своё время на подобный рефакторинг и поэтому решил свернуть разработку.

  1. Главная ссылка к новости (https://jasone.github.io/2025/...)
  2. OpenNews: Менеджер распределения памяти jemalloc выпущен в виде отдельной библиотеки
  3. OpenNews: Miсrosoft открыл код системы распределения памяти mimalloc
  4. OpenNews: Google опубликовал новый вариант системы распределения памяти TCMalloc
  5. OpenNews: Производительность Ubuntu-пакета jq удалось увеличить в 1.9 раза путём пересборки
  6. OpenNews: Компания Akamai предложила безопасную систему распределения памяти для OpenSSL
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/63405-jemalloc
Ключевые слова: jemalloc
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (67) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Skullnet (ok), 23:46, 13/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +11 +/
    А что там можно ещё разрабатывать?
     
     
  • 2.47, Аноним (47), 10:04, 14/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > автор jemalloc уволился из Facebook, а разработка была продолжена оставшейся командой из Facebook

    А что тут вообще можно использовать?

     

  • 1.2, НяшМяш (ok), 00:00, 14/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Книгомордые редиски, переезжаем на tcmalloc от гугла или mimalloc от майков.
     
     
  • 2.30, Зануда (?), 07:07, 14/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    dfwmalloc
     
     
  • 3.73, Аноним (73), 11:18, 15/06/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    wtfmalloc
     
  • 2.41, Лансер (ok), 08:30, 14/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    hardened_malloc?
     
     
  • 3.46, Лансер (ok), 09:54, 14/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > This is a security-focused general purpose memory allocator providing the malloc API along with various extensions. It provides substantial hardening against heap corruption vulnerabilities.
    > The security-focused design also leads to much less metadata overhead and memory waste from fragmentation than a more traditional allocator design.
    > It aims to provide decent overall performance with a focus on long-term performance and memory usage rather than allocator micro-benchmarks.
    > It offers scalability via a configurable number of entirely independent arenas, with the internal locking within arenas further divided up per size class.
     

  • 1.4, Аноним (4), 00:09, 14/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –8 +/
    Она была ужасно кривая и ломала примерно весь софт. Конфигурация сложная и не универсальная. При обновлениях всё рассыпается, сначала файрфокс с ней работал, потом перестал.
     
     
  • 2.5, Аноним (5), 00:11, 14/06/2025 [^] [^^] [^^^] [ответить]  
  • +13 +/
    Какая-то тупая совсем ложь. У меня на ней кластер работал годами.
     
     
  • 3.6, Аноним (4), 00:13, 14/06/2025 [^] [^^] [^^^] [ответить]  
  • –6 +/
    Да конечно. Кластер чего, кластер питона с пхп? Ну и то что было раньше не считается, софт то развивается, а стабж давно стагнирует.
     
  • 2.14, Аноним (14), 02:57, 14/06/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Использовал. Не было проблем....
     
  • 2.22, morphe (?), 04:27, 14/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > сначала файрфокс с ней работал, потом перестал

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

    В частности firefox уже использует форк jemalloc из коробки, и ему не нравится когда он запущен поверх системного jemalloc/tcmalloc
    Аналогично с хромом - он включает в себя tcmalloc, и он тоже падает если в системе аллокатор стоит tcmalloc/jemalloc

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

     
     
  • 3.42, Аноним (4), 09:00, 14/06/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Питон у меня тоже внезапно отвалился. Но да, у него свой аллокатор поверх системного. Это было актуально, потому что питон весьма жадный до памяти. А вот tcmalloc я переопределяю как раз для электрон приложений, чтобы они умерили аппетиты.
     
     
  • 4.69, morphe (?), 07:32, 15/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Не поумерят, в хромиуме у тебя по дефолту tcmalloc
     
     
  • 5.70, Аноним (4), 08:13, 15/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    А ну скажем это зависит от платформы. И бандленный tcmalloc это не системный tcmalloc. Правда, на jemalloc у меня так и не получилось поменять.  https://github.com/webrtc-uwp/chromium-base/blob/master/allocator/README.md
     
     
  • 6.75, morphe (?), 14:30, 15/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > А ну скажем это зависит от платформы. И бандленный tcmalloc это не
    > системный tcmalloc.

    А какая разница? Всё наиболее часто выделяющее его использует

    > Правда, на jemalloc у меня так и не получилось
    > поменять.

    Переключи на системный аллокатор, и выключи несколько hardening опций касательных аллокаций памяти (jemalloc сам помогает за целостностью памяти следить) - и оно будет работать с jemalloc


     
  • 2.85, гцц (?), 13:13, 16/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    была б кривая никто бы не поддерживал так долго её.
    на ней бюджет не попилить как на AI или чатботах там, колцентрах автоматизированных. значит нужно было это всё. Мета кстати а Ирландии зарегистрирована, это вообще не фейсбук.
     
     
  • 3.86, Аноним (4), 19:42, 16/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    отовсюду выкидывают, где навязывали, то, что глибц не идеальна, не делает сабж предпочтительнее
     

  • 1.11, Кошкажена (?), 02:02, 14/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Поясните какой там может быть технический долг? Там кода не так много...
     
     
  • 2.60, Dzen Python (ok), 20:28, 14/06/2025 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Код непонятен нынешнему поколению миддлов, в т.ч. и "выросших" из квотчиков?
    Неправильное форматирование кода?
    Нет auto-обёрток над типами, все в size_t?
    Новый компилятор выдаёт целую стену из "пустых" ворнингов при сборке?
    Для продолжения разработки нужно не на митапы по защите мигрантов ходить, а раскуривать логику?
    Это просто прикрытие реальной нехватки рабочих рук при формально закрытых вакансиях.
    Индуса Вахмаражью страшно пускать в боевую репу, его форк уже год не может даже час проработать без краша при интенсивном выделении/освобождении памяти?

    Выбери любые три.

     
  • 2.80, anonymous (??), 21:23, 15/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Из того, что сразу видно на поверхности: билд-система на autotools, что очень усложняет кросс-платфоменность. По утверждению автора, они хотели несколько раз переехать на cmake, и все неудачно. Второй вектор - соответствие современным стандартам языка, возможно, сейчас можно уже что-то подчистить, убрать устаревшие конструкции
    Я не сильно в код вдавался, не могу оценить фронт работ, но видится, команда в 4-5 толковых специалистов справилась бы за обозримый срок. Не знаю, что они там в своем Фейсбуке теплятся.
     

  • 1.12, Аноним (12), 02:10, 14/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    В чем прикол подобных биюлиотек? Не очень понятно в каких случаях надо юзать их, а не стандартную реализацию. И разве ядро не справляется с фрагментацией само?
     
     
  • 2.15, Аноним (14), 02:57, 14/06/2025 [^] [^^] [^^^] [ответить]  
  • –3 +/
    погугли
     
     
  • 3.52, Аноним (52), 12:54, 14/06/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    гуглить уже не модно, спроси у джипити
     
  • 2.17, Аноним (17), 03:28, 14/06/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Что значит стандартная реализация? В каждой ОС, libc эти "стандарты" разные. Вот, к примеру, во FreeBSD - jemalloc и есть стандратная реализация, т.е. ты пишешь char *p = malloc(1024); и вызывается jemalloc.
     
     
  • 3.27, Аноним (27), 06:21, 14/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    т.е. фря всё?
     
     
  • 4.49, YetAnotherOnanym (ok), 11:11, 14/06/2025 [^] [^^] [^^^] [ответить]  
  • +11 +/
    Так она давно "всё".
    Фря стала "всё" в тот момент, когда первый школьник установил Linux на свой десктоп, зашёл с него на опеннет и объявил, что всё, кроме Linux'а теперь - всё.
     
  • 2.21, morphe (?), 04:21, 14/06/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    glibcшный аллокатор во многих задачах работает хуже чем хотелось бы
     
     
  • 3.44, Аноним (4), 09:45, 14/06/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > glibcшный аллокатор во многих задачах работает хуже чем хотелось бы

    Glibc имеет не меньше параметров для конфигурации.

     
     
  • 4.78, morphe (?), 18:18, 15/06/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Это шутка такая https www gnu org software libc manual html_node Malloc-Tunab... большой текст свёрнут, показать
     
  • 2.45, Аноним (45), 09:53, 14/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Просто посмотри сравнение с malloc на примере ноды
    https://github.com/nodejs/node/issues/21973
     
  • 2.66, Аноним (-), 01:59, 15/06/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > ядро не справляется с фрагментацией само?

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

    > Не очень понятно в каких случаях надо юзать их, а не стандартную реализацию.

    Если не понятно, значит не нужно. Когда споткнёшься об это, всё сразу станет ясно.

     

  • 1.16, Аноним (16), 03:18, 14/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    для freeswitch на больших нагрузках решала много проблем с качеством голоса и тормозами. теперь нужно искать замену. печаль.
     
     
  • 2.25, bOOster (ok), 06:18, 14/06/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Чегой??
     
  • 2.26, bOOster (ok), 06:19, 14/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Какие нахрен нагрузки??? Причем тут FreeSwitch?
    Sofia знешь че такое и Nokia изначально? :)
    Да, Nokia мощно вкинула SIP стэк в опенсоурс
     
     
  • 3.61, Tron is Whistling (?), 21:31, 14/06/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    У вас просто нет таких нагрузок, под которыми монструозно костыльный фрисвитч ляжет... внезапно именно из-за аллокатора. Так уж это вот поделие написали. Но если честно - я бы его таки шардил при появлении подобных нагрузок.
     
     
  • 4.76, Аноним (16), 17:57, 15/06/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ага. В школе каникулы, вот и повылазило со всех щелей необразованное быдло без реального опыта.
    У меня и так кластер из 100+ fs серверов в aws с 15000+ cps, сотнями тысяч доменов юзверей,  с десятками LB/registrar/presense opensips и вот тут начинается самый нежданчик.
     
  • 2.28, bOOster (ok), 06:29, 14/06/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > для freeswitch на больших нагрузках решала много проблем с качеством голоса и
    > тормозами. теперь нужно искать замену. печаль.

    BSD как не странно работает лучше всех. Хехехе
    Есть проблемы - напиши мне и я сделаю тебе минимальные тайминги

     
     
  • 3.58, Аноним (58), 18:13, 14/06/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > BSD как не странно работает лучше всех.

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

     
     
  • 4.65, Аноним (-), 01:09, 15/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > крайне редко и в очень ограниченном количестве случаев.

    Потому что Free BDSM сессии на халяву, да еще в пассивной роли - это такое себе.

     
  • 3.64, Аноним (-), 01:08, 15/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Есть проблемы - напиши мне и я сделаю тебе минимальные тайминги

    И драйверы под современное железо напишешь? Так с хрена ты еще не разработчик?

     
     
  • 4.83, пох. (?), 09:04, 16/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    мистер, вы что-то запутались в показаниях!
    Какие еще тебе "драйверы для современного железа" нужны твоему (вероятнее всего - воображаемому) кластеру в aws, с мильенстатыщами одних курьеров только?

     
  • 2.62, Аноним (62), 22:03, 14/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Если присмотреться в код фрисвича, там такое можно найти, что все волосы сразу зашевелятся и не только.
     
     
  • 3.77, Аноним (16), 17:59, 15/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    и как они баги фиксят (нет) годами, которые приводят к зависанию сессий и до сих пор висят в gh. и много чего еще можно рассказать.
     

  • 1.19, Golangdev (?), 03:54, 14/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Ушла эпоха...
     
  • 1.48, Аноним (48), 10:41, 14/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    "После переименования в Meta приоритеты компании изменились, развитие библиотеки застопорилось и разработка сосредоточилась только на внутренних потребностях."

    А всё почему, потому что не GPL?!

     
     
  • 2.54, Аноним (54), 14:09, 14/06/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А всё потому, что Цукерберг хочет метавселенные. Но совершенно не понимает, как их сделать интересными не только для него одного.
     

  • 1.51, Аноним (51), 12:42, 14/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    1с с ней хорошо работает...
    (((
     
  • 1.53, Аноним (53), 13:13, 14/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Rust до 1.32 его тоже использовал по дефолту.
     
     
  • 2.55, Аноним (17), 15:53, 14/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Дырявый сишный аллокатор? А как же безопасность?
     
     
  • 3.84, 1 (??), 10:51, 16/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    "Это другое !" (tm)
     
  • 3.87, Аноним (87), 21:59, 16/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Так там, ведь, безопасТность же. Потому не страшно ;)
     

  • 1.59, Аноним (59), 19:50, 14/06/2025 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     
  • 1.63, Аноним (63), 01:05, 15/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > В 2017 году автор jemalloc уволился из Facebook, а разработка была продолжена
    > оставшейся командой из Facebook. После переименования в Meta приоритеты компании изменились, развитие библиотеки
    > застопорилось и разработка сосредоточилась только на внутренних потребностях.

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

     
     
  • 2.67, Аноним (12), 04:33, 15/06/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А они все продолжают и продолжают убеждать всех что пермиссивка это хорошо. Сколько еще подобных случаев нужно, чтоб люди наконец поняли, что только жпл спасет ит?
    В мит же так и написано - можно брать и продавать чужой код, а люди все надеются, что добрые корпорации их отблагодарят. Ну да, вон какие благодарности, такие шо оригинальные авторы из отрасли уходят.
     
     
  • 3.68, Аноним (-), 05:39, 15/06/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > А они все продолжают и продолжают убеждать всех что пермиссивка это хорошо.

    Она и хороша. Фэйсбуку, вытершему обо всех ноги, в стандартном корпоративном стиле. Сами ж написали в лицензии Do Whatever F... You Want. Ну они и использовали автора как коврик для ног. Ничего не знаем, умещается в пределы лицензии.

    > код, а люди все надеются, что добрые корпорации их отблагодарят. Ну
    > да, вон какие благодарности, такие шо оригинальные авторы из отрасли уходят.

    Ну вот и отблагодарили - автыря на мороз, в код - индусов, ничего личного это бизнес. И тут автор такой репу чешет - а зачем ему забесплатно фикальи за индусами чистить?!


     
     
  • 4.71, Аноним (71), 09:54, 15/06/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Она и хороша. Фэйсбуку, вытершему обо всех ноги, в стандартном корпоративном стиле.
    > Сами ж написали в лицензии Do Whatever F... You Want. Ну
    > они и использовали автора как коврик для ног. Ничего не знаем,
    > умещается в пределы лицензии.

    И тут ты нам щас расскажешь, как именно GPL предотвратил бы "скупил, перехватил, на мороз пустил, индусами заменил"?  И что именно изменилось бы в "тут автор такой репу чешет - а зачем ему забесплатно фикальи за индусами чистить?!"

    Или как обычно, будет лишь  выделение метанчика в лужу?

     
     
  • 5.72, НяшМяш (ok), 10:48, 15/06/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Если бы у чела был код под GPL - он бы до сих пор жил в мамином подвале и jemalloc просто оставался бы ещё одним никому не нужным васянским проектом. А так он оказался хоть кому-то нужен, пусть и временно, а чел немного денег заработал на еду.
     
     
  • 6.82, Аноним (-), 21:52, 15/06/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Если бы у чела был код под GPL - он бы до сих пор жил в мамином подвале

    У Торвальдса нормальный такой подвал так то. С женой-каратисткой, бэхой, топовым EPYC и чем там еще. Сотрудникам мордокниги выделяют подвалы лучше? :)

    Да, GPLный проект если что. А такие же но BSD Licensed - на всю толпу совсем другие суммы делят, там да, в пору в подвале жить.

     
     
  • 7.90, Аноним (90), 09:44, 17/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что ранние линукс-компании, такие как Red Hat, выходя на биржу, подарили ему акции в качестве жеста благодарности. Могли бы этого и не делать, было бы не очень красиво, но юридически никаких претензий. Просто нормальными людьми оказались, не жадными.
     

  • 1.74, Аноним (74), 13:51, 15/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >После переименования в Meta приоритеты компании изменились, развитие библиотеки застопорилось и разработка сосредоточилась только на внутренних потребностях. Общедоступная кодовая база со временем деградировала и для устранения накопленного технического долга теперь требуется проведение значительного рефакторинга.

    Всё, что надо знать о корпоративном опенсорсе.

     
     
  • 2.95, Аноним (95), 07:49, 19/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Линукс - он такой.
     

  • 1.79, Аноним (79), 19:44, 15/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Не про библиотеку, но в тему: ВОТ СЕЙЧАС самое время вылезти прыщавым экспертам и покричать про "плохой и медленный GC" :))

    Да, GC вообще не сравним по скорости с самопальными аллокаторами, но он УНИВЕРСАЛЕН и скажем прямо, вполне годится для 99% прикладух. Более того - например, GC из .NET может даже не выделять память для объекта, если у неё в несобраном мусоре есть шмот такого же типа - она просто его пометит "живым" и отдаст как выделенный! Т.е. оптимизация и всё такое.

    Так что прекращаем ныть про GC и начинаем писать на D. :)

     
     
  • 2.81, Аноним (-), 21:50, 15/06/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Не про библиотеку, но в тему: ВОТ СЕЙЧАС самое время вылезти прыщавым
    > экспертам и покричать про "плохой и медленный GC" :))

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

     
     
  • 3.93, Аноним (93), 12:20, 18/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Да-да, Rust придумал, как бороться с use_after_free - методом фейкового освобождения памяти. Утечки - это же не уязвимости.
     
  • 2.88, Аноним (87), 22:13, 16/06/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Для 99% прикладух годится malloc() из GLibc.
     

  • 1.91, Аноним (91), 10:39, 18/06/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Печально, использовал его вместе с MySQL
    Память не выжирал и не тёк, очень даже годный продукт был.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру