LINUX.ORG.RU

Избранные сообщения be_nt_all

Smalltalk - изучаем вместе

Форум — Development

Взялся изучать Smalltalk. Процесс изучения выкладываю на видео, правда информацию там стараюсь выдавать максимально достоверную, и по возможности без «воды». В этой теме по ходу дела буду оставлять ссылки на появляющиеся видеоролики. Комментарии приветствуются.

Видео 1. Общие сведения

Краткая история, перечисление некоторых реализаций, общая суть некоторых принципов системы Смолток.

………………………………………………………..

Видео 2. Сообщества, книги, проекты.

Показаны русскоязычные сообщества по Smalltalk, в частности, группа в ВК. Сделан обзор архива с книгами, которые я нашёл в Сети и выложил на Гугл-диск. Рассказано о двух крупных проектах, которые использовали Smalltalk (FLProg и OpenCobalt). Расширенный список ссылок находится в описании к видео, непосредственно на Youtube

………………………………………………………..

Видео 3. Виртуальные машины.

В уроке кратко рассмотрены среды программирования Squeak, Pharo, и Dolphin.

………………………………………………………..

В темах, не затронутых в видеороликах, я ещё либо сильно «плаваю», либо пока не знаю их вообще. Поэтому обсуждать могу только уже выложенное на Ютуб.

 , ,

Oleg_Kon
()

Релиз встраиваемой системы реального времени Embox v0.4.0

Новости — Open Source
Группа Open Source

8 января 2020 года вышел релиз встраиваемой системы реального времени Embox v0.4.0.

  • Добавлена частичная поддержка архитектуры RISC-V
  • Добавлен ряд поддерживаемых платформ в том числе и Байкал-Т
  • Переработаны несколько подсистем (USB, FS, ..)
  • Добавлена подсистема MMC
  • Добавлен ряд драйверов

>>> Подробности

 , , , ,

abondarev
()

ASCII игры по Linux

Форум — Games

Народ, кто нибудь знает ASCII игры под Linux(если точнее то под Ubuntu)? Про эти ваши Dwarf Fortress, NetHack я в курсе. Нужно больше... >:)

 ,

martin_blumen
()

Подскажите, какой сейчас самый практичный статический анализатор кода для С?

Форум — Development

Я всегда пользовал cppcheck но вдруг появилось чтото лучшее?

 , ,

cvv
()

Инструмент для обнаружения гонки данных?

Форум — Development

Вот написал я некий замороченный параллельный код на плюсах и OpenMP. Поскольку там производительность важна, то я хитро извернулся и свел число мьютексов к минимуму - циклы так устроены что разные потоки не должны писать в одни и те же данные или читать данные которые пишет другой поток.

А теперь как мне проверить что это правильно работает?;-)

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

 , , ,

AntonI
()

Universal UI for Rust

Форум — Development

Доброго времени суток.

Примерно полгода назад, когда я начинал изучать Rust, я обнаружил в нем фатальный недостаток - отсутсвие крейта, который бы реализовывал удобный и кроссплатформенный UI. Хотелось поддержки Linux/Windows/MacOS/WASM-web/Android/iOS и удобства использования уровня Qt с их сигналами-слотами.

В ходе парочки бессоных ночей (на самом деле намного больше) появилась некоторое количество крейтов, которые позволяет писать UI вот так:

#[derive(UWidget)]
struct MyWidget {
    #[uwidget]
    layout: LinearLayout,

    #[public_slot] // у структуры будет публичный метод, через который слот будет доступен снаружи
    #[uprocess(on_text_updated)]
    slot_set_text: SlotImpl<String>,

    slotproxy_set_text: SlotProxy<String>,

    #[uprocess(on_button_clicked)]
    slot_button_clicked: SlotImpl<()>,
}

impl MyWidget {
    pub fn new(placeholder: String) -> MyWidget {
        let slotproxy_set_text;
        let slot_button_clicked = SlotImpl::new();

        let mut layout = LinearLayout::new(Orientation::Horizontal);
        layout.push_widget({
           let textedit = TextEdit::new(placeholder);
           slotproxy_set_text = textedit.slot_set_text().proxy();
           textedit
        });

        layout.push_widget({
            let mut button  = Button::new("Push me");
            button.signal_clicked().connect(&slot_button_clicked);
            button
        });

        return MyWidget{
            layout,
            slot_set_text: SlotImpl::new(),
            slotproxy_set_text,
            slot_button_clicked,
        };
    }

    fn on_text_updated(&self, s: String) {
        self.slotproxy_set_text.exec_for(s);
    }

    fn on_button_clicked(&self, _:()) {
        info!("button clicked!");
    }
}



В ближайшем будущем планирую еще немного посидеть над макросами, чтобы можно было писать вот так:

pub fn new(placeholder: String) -> MyWidget {
    let layout = layout!(
        orientation: Horizontal,
        widget: text_edit!(
        	placeholder: placeholder,
        	slot_set_text: proxy!(slotproxy_set_text),
        ),
        widget: button!(
        	signal_clicked: connect!(slot_button_clicked),
        ),
    );

    return MyWidget{
        layout,
        slot_set_text: SlotImpl::new(),
        slotproxy_set_text,
        slot_button_clicked,
    };
}


Немного технических подробностей:
* Уже работает для Linux (Qt) и WASM (web-sys).
** В ближайших планах минимальная поддержка Windows/MacOS через Qt и поддержка Android (Java-jni, нативные виджеты).
** В среднесрочных планах поддержка нативных виджетов Win/Mac, поддержка iOS.
* Система сборки на build.rs-скриптах для cargo, которая позволяет из одних и тех же исходников собирать проект для любой платформы. Небольшой (2-5 строк) скрипт придется написать самому, используя готовые функции из библиотеки.
* В самой библиотеке есть еще Property, которые умеют хранить состояние и обладают встроенными сигналами/слотами. И немного других улучшалок.
* Никаких unsafe в интерфейсах для пользователя (внутри - только для работы с native-кодом).
* Никаких RefCell, Rc и прочих Arc в интерфейсах. Внутри их тоже практически нет, к релизу хочу выпилить совсем.


В основном вдохновлялся Qt, но изначально все писалось под web-sys, с последующим прикручиванием Desktop'а.


Тут хотелось бы обсудить 2 вещи (на самом деле 3):
1. Интересна ли вам такая библиотека.
2. Насколько удобным выглядит интерфейс.
3. Насколько Rust ущербен, порекомендуйте уже готовые библиотеки, и вот это вот все.

P.S. Буду держать вас в курсе, так что можете сразу ставить uniui тег в игнор.

 , , , uniui

trex6
()

beef - новый системный ЯП

Форум — Development

https://www.beeflang.org/

Особенности:

  • По заявлению автора, представляет собой смесь C++ и C#, с небольшими вкраплениями Rust.
  • Без GC, JIT и тому подобного.
  • Развивается параллельно с IDE (написана на самом beef и собственном тулките). Дизайн языка развивается с учётом удобства разработки IDE.
  • Автор делает упор на удобную отладку с помощью дебаггера, а не print.
  • Умеет все модные фичи: ADT, pattern matching, лямбды, дженерики, миксины, кортежи, опциональные типы и тд. Но не гарантирует null-safety.
  • Поддерживает рантайм рефлексию.
  • Не использует исключения. Используется тот же подход что и в Rust: Result + panic.
  • Проверяет проблемы с памятью в рантайме в отладочной сборке. В релизной сборке всё как в C/C++.
  • Предоставляет лёгкое взаимодействие с C/C++ кодом (не уверен в каком виде).
  • Основан на ворованном LLVM. Как будто кто-то сомневался.
  • Автор пилит язык последние 5 лет full-time.

Простой пример:

static Result<uint> GetMinusOne(uint i)
{
    if (i == 0)
        return .Err;
    return .Ok(i - 1);  
}

void Use()
{
    /* Handle result via a switch */
    switch (GetMinusOne(i))
    {
        case .Ok(let newVal): Console.WriteLine("Val: {}", newVal);
        case .Err: Console.WriteLine("Failed");
    }

    /* This invokes an implicit conversion operator, which will be fatal at runtime if an error is returned */
    int newVal = GetMinusOne(i);

    /* Result<T> contains a special "ReturnValueDiscarded" method which is invoked to facilitate failing fatally on ignored returned errors here */
    GetMinusOne(i);
}

В целом ближе к D, чем к Rust, так как содержит намного меньше гарантий.

 , ,

RazrFalcon
()

Вывод графики в Emacs

Форум — Development

Так как Emacs - универсальная платформа, возникла мысль о сабже. Однако чтение руководства для GNU/Emacs показало, что задача эта нетривиальная. Может, я не то ищу? Мне бы просто окно определённого размера в Emacs, пикселями которого я могу управлять как массивом байт.

 , ,

gedisdone
()

Компактная библиотека для растровой графики для C++.

Форум — Development

Посоветуйте subj?
Надо что-то, что может работать со слоями и примитивами.
Т.е. наложить один битмап на другой с использованием маски/альфаканала/етц и нарисовать сверху примитивы и текст.
Желательно на C++ и с возможностью статической линковки.
Ну и сохранить это всё в один зи форматов по выбору, png/jpeg/tiff/etc. Всё это должно работать без каких либо гуёв и 3d ускорения.

GTK и Qt мне кажутся несколько оверкилл.
Да, ImageMagick сейчас используется, но без матов о некоторых его особенностях высказаться не могу.

 , ,

WatchCat
()

Что нельзя сделать в языке java без метапрограммирования?

Форум — Development

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

 ,

wall_jvm
()

Есть ли современный аналог DDD?

Форум — Development

Интересует возможность наглядно отображать структуры данных при отладке: http://www.cs.angelo.edu/~mmotl/2305/manual/ddd/html/PICS/ddd-layout.png https://bcaptain.files.wordpress.com/2013/06/ddd.png

Может в каких-то попсовых IDE что-то подобное запилили.

Языки: Си, C++. Всякие хаскели и проч - не интересует.

 , , , ,

SZT
()

Серия статей «По языку в день» от Андрея Шитова

Новости — Разработка
Группа Разработка

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

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

В рождественском календаре этого года (с 1 по 24 декабря), я буду ежедневно публиковать статьи повествующие об основах различных языков программирования: один день - один язык. Чтобы сделать обзоры более полезными, я постараюсь придерживаться единого формата и разобрать аспекты языка, необходимые для написания следующих мини-проектов:

  • Hello, World!
  • Функция, вычисляющая факториал рекурсивно или в функциональном стиле
  • Программу, создающую массив объектов и выполняющую полиморфный вызов методов на них
  • Реализацию сонной сортировки (sleep sort). Данный алгоритм не применяется в боевых условиях, но замечательно демонстрирует возможности языка в разрезе конкурентности

Список языков:

  • День 1. TypeScript
  • День 2. Rust
  • День 3. Julia
  • День 4. Kotlin
  • День 5. Современный C++
  • День 6. Crystal
  • День 7. Scala
  • День 8. Dart
  • День 9. Hack
  • День 10. Lua
  • День 11. Raku
  • День 12. Elixir
  • День 13. OCaml
  • День 14. Clojure
  • День 15. Nim
  • День 16. V
  • День 17. Go
  • День 18. Hy
  • День 19. Red
  • День 20. Mercury
  • День 21. Elm

>>> Подробности

 ,

perl5_guy
()

Вышла новая версия CMake 3.16.0

Новости — Разработка
Группа Разработка

Вышла новая версия популярной системы сборки CMake 3.16.0 и сопутствующих утилит CTest и CPack, облегчающих тестирование и сборку пакетов соответственно.

( читать дальше... )

>>> Подробности

 , ,

a1batross
()

Funkwhale — децентрализованный музыкальный сервис

Новости — Open Source
Группа Open Source

Funkwhale – это проект, который даёт возможность слушать и обмениваться музыкой внутри открытой децентрализованной сети.

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

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

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

У проекта есть развитое коммьюнити, а разработку можно поддержать как финансово, так и поучаствовав.

>>> Подробности

 ,

anonymous
()

Wget2

Новости — GNU's Not Unix
Группа GNU's Not Unix

Вышла бета-версия wget2 — переписанной с нуля качалки-«паука» wget.

Главные отличия:

  • Поддерживается HTTP2.
  • Функционал вынесли в библиотеку libwget (LGPL3+). Интерфейс ещё не стабилизировали.
  • Многопоточность.
  • Ускорение за счёт сжатия HTTP и HTTP2, параллельных соединений и If-Modified-Since в заголовке HTTP.
  • Плагины.
  • FTP не поддерживается.

Судя по мануалу, интерфейс командной строки поддерживает все ключи последней версии Wget 1 (кроме FTP) и добавляет много новых, главным образом, связанных с новыми методами аутентификации и HTTP2.

И вторая ложка дёгтя помимо FTP: к разработке причастен один из идейных противников компрессора XZ. Все архивы выкладываются как tar.gz или tar.lz.

>>> Объявление в рассылке info-gnu

 ,

question4
()

dhall-lang v10.0.0

Новости — Разработка
Группа Разработка

Dhall – это программируемый язык конфигурации, который можно описать как: JSON + функции + типы + импорт.

Изменения:

  • Полностью закончена поддержка старого литерального синтаксиса.
  • Добавлена поддержка зависимых типов.
  • Добавлена встроенная функция Natural/subtract.
  • Упрощен процесс выбора полей.
  • Когда аргументы эквивалентны не используется //.
  • URL-ы, представленные в двоичном виде, не декодируются при прохождении сегментов пути.

Новые возможности:

  • Стандартизирован процесс смешения записей разного типа.
  • Добавлена функция сравнения Natural.

>>> Подробности

 

anonymous
()

Выпуск tl 1.0.6

Новости — Open Source
Выпуск tl 1.0.6
Группа Open Source

tl — кроссплатформенное веб-приложение с открытым кодом (GitLab) для переводчиков художественной литературы. Приложение бьёт загружаемые тексты на фрагменты по символу новой строки и располагает их в две колонки (оригинал и перевод).

Основные изменения:

  • Плагины времени компиляции для поиска слов и словосочетаний в словарях;
  • Пометки в переводе;
  • Общая статистика по переводу;
  • Статистика сегодняшней (и вчерашней) работы;
  • В фильтре по содержимому теперь можно использовать регулярные выражения (RE2);
  • Если нажат Ctrl при создании варианта перевода, оригинал копируется в перевод;
  • Экспорт на notabenoid (и его клоны), импорт с него, обновление, сравнение;
  • Ссылки на следующую и предыдущую книгу в режиме перевода;
  • Фильтр по названию на главной;
  • Поиск и замена с предварительным просмотром изменений;
  • Плагин для поиска по уже переведённому (по всем книгам);
  • И другое.

>>> Подробности

 ,

opennota
()

Pale Moon 28.7.0

Новости — Open Source
Группа Open Source

Доступна новая значительная версия Pale Moon — браузера, который когда-то был оптимизированной сборкой Mozilla Firefox, но со временем превратился в достаточно самостоятельный проект, уже во многом не совместимый с оригиналом.

Это обновление включает частичную переработку движка JavaScript, а также реализацию в нём ряда изменений, которые могут повлиять на работоспособность сайтов. Данные изменения реализуют версии спецификаций JavaScript (они же реализованы в других браузерах), которые могут не быть обратно-совместимыми с прежним поведением.

( читать дальше... )

>>> Ссылки для загрузки

>>> Сайт с дополнениями

>>> Подробности

 , ,

xaizek
()

GHC 8.8.1

Новости — Open Source
Группа Open Source

Тихо и незаметно, вышла новая версия известного компилятора языка программирования Haskell.

Среди изменений:

  • Поддержка профилирования на 64-битных системах с Windows.
  • GHC теперь требует LLVM версии 7.
  • Метод fail окончательно вынесен из класса Monad, теперь он находится в классе MonadFail (финальная часть MonadFail Proposal).
  • Явное применение типа (type application) теперь работает и для самих типов, а не только для значений.
  • forall теперь является ключевым словом вне зависимости от контекста, что позволяет использовать его в type families и rewrite rules.
  • Улучшен алгоритм компоновки кода для x86.
  • Множество других изменений.

>>> Полный список изменений

>>> Гайд по миграции кода на новую версию

>>> Скачать

 , ,

hateyoufeel
()

re2c 1.2

Новости — Разработка
Группа Разработка

В пятницу 2-го августа вышел релиз re2c — свободного генератора лексических анализаторов для языков C и C++. Напомним, что re2c был написан в 1993 году Питером Бамбулисом как экспериментальный генератор очень быстрых лексических анализаторов, отличающийся от других генераторов скоростью сгенерированного кода и необычно гибким пользовательским интерфейсом, который позволяет легко и эффективно встривать анализаторы в существующую кодовую базу. С тех пор проект развивается сообществом и продолжает оставаться площадкой для экспериментов и исследований в области формальных грамматик и конечных автоматов.

( читать дальше... )

>>> Подробности

 , , ,

skvadrik
()