KolibriOS - Issue Tracker

Текстовый редактор на С

Портировать/написать новый текстовый редактор на С.

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

Priority   Status

Comments

Договорились с Кириллом Липатовым вести здесь статус по проделанной работе.

В колибри уже существует по меньшей мере два текстовых редактора: один размера ~3K, второй -- ~8K основа + ~25K модули синтаксической подсветки.

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

Минимальный размер исполняемого файла с libc и libgcc оказался 18К, это никуда не годитс, и вообще большой вопрос почему. Моя догадка: в libgcc тяжёлый код, инициализирующий статические конструкторы; возможно, там что-то неоптимально. Отключение libc и libgcc сокращает минимальный размер до 420 байт. И это, скорее всего, не предел: что-то ещё генерирует скрипт линкера, до конца ещё не разобрался.

Но для начала норально.

Графический hello world с хабрахабра [https://habrahabr.ru/company/kolibrios/blog/229231/] оказался немножко поломан, пришлось подправить kos32sys.h, патч пришлю позже. Размер кода с одной кнопкой вышел в 644 байта, что ИМХО уже выглядит, как хороший результат.

Есть идея использовать C_Layer, однако с ним вообще ничего не понятно: заголовочные файлы, AFAIK, не имеют однозачного соответствия именования box_lib, а объектные файлы, не смотря на то, что с виду являются обёрткой над box_lib, имейт довольно большой размер: loadboxlib.obj имеет размар 5К!

kpack на x86_64 linux не завёлся:

foo@bar ~/src/kolibri/hello % ~/Downloads/kpack_linux64/kpack ../contrib/C_Layer/OBJ/loadboxlib.obj
/home/foo/Downloads/kpack_linux64/kpack: Symbol `write' causes overflow in R_X86_64_PC32 relocation
/home/foo/Downloads/kpack_linux64/kpack: Symbol `exit' causes overflow in R_X86_64_PC32 relocation
/home/foo/Downloads/kpack_linux64/kpack: Symbol `exit' causes overflow in R_X86_64_PC32 relocation
/home/foo/Downloads/kpack_linux64/kpack: Symbol `fopen' causes overflow in R_X86_64_PC32 relocation
/home/foo/Downloads/kpack_linux64/kpack: Symbol `fopen' causes overflow in R_X86_64_PC32 relocation
/home/foo/Downloads/kpack_linux64/kpack: Symbol `malloc' causes overflow in R_X86_64_PC32 relocation
/home/foo/Downloads/kpack_linux64/kpack: Symbol `malloc' causes overflow in R_X86_64_PC32 relocation
/home/foo/Downloads/kpack_linux64/kpack: Symbol `malloc' causes overflow in R_X86_64_PC32 relocation
/home/foo/Downloads/kpack_linux64/kpack: Symbol `malloc' causes overflow in R_X86_64_PC32 relocation
/home/foo/Downloads/kpack_linux64/kpack: Symbol `malloc' causes overflow in R_X86_64_PC32 relocation
/home/foo/Downloads/kpack_linux64/kpack: Symbol `fread' causes overflow in R_X86_64_PC32 relocation
/home/foo/Downloads/kpack_linux64/kpack: Symbol `fclose' causes overflow in R_X86_64_PC32 relocation
/home/foo/Downloads/kpack_linux64/kpack: Symbol `fclose' causes overflow in R_X86_64_PC32 relocation
/home/foo/Downloads/kpack_linux64/kpack: Symbol `free' causes overflow in R_X86_64_PC32 relocation
/home/foo/Downloads/kpack_linux64/kpack: Symbol `free' causes overflow in R_X86_64_PC32 relocation
/home/foo/Downloads/kpack_linux64/kpack: Symbol `free' causes overflow in R_X86_64_PC32 relocation
/home/foo/Downloads/kpack_linux64/kpack: Symbol `fwrite' causes overflow in R_X86_64_PC32 relocation
/home/foo/Downloads/kpack_linux64/kpack: Symbol `utimes' causes overflow in R_X86_64_PC32 relocation
[1] 14328 segmentation fault (core dumped) ~/Downloads/kpack_linux64/kpack ../contrib/C_Layer/OBJ/loadboxlib.obj

$ uname -r
4.15.8-1-ARCH

foobarrior on 2018-03-16 14:57:28