TL; DR: Может ли 32-разрядный байт emacs- lisp превышать первые 512 МБ файла?
Мне нравится использовать emacs- lisp для различных задач обработки данных из-за его (очевидно) высокого уровня интеграции с редактором.
При написании пользовательских функций я иногда сталкиваюсь с ограничениями, налагаемыми most-positive-fixnum
. Хотя я могу жить и понимать причины невозможности загрузки всего 1 ГБ файла в буфер, интерфейс insert-file-contents[-literally]
также не позволяет получить доступ к кускам данных за пределами первого 512 МБ файла, так как он требует как аргумент - целочисленный диапазон байтов.
Есть ли способ обойти это ограничение? Насколько я знаю, в настоящее время insert-file-contents
- это самая низкоуровневая функция чтения файлов, доступная для emacs- lisp, insert-file-contents-literally
, являющаяся просто вариантом первого, настроенного с помощью установки пары переменных, то есть emacs- lisp похоже, не обеспечивает никакого низкоуровневого файлового интерфейса типа fopen
.
Любопытно, в какой-то момент (возможно, с помощью самокомпилированного двоичного кода) вызов insert-file-contents-literally
с аргументами с плавающей запятой работал у меня, позволяя получать доступ к диапазонам с высоким байтом за счет риска ошибок округления. Однако, используя последнюю версию precompiled emacs из ftp.gnu.org(24.3 с момента написания), это приводит к ошибке (wrong-type-argument file-offset NUMBER)
.