TL; DR:32位emacs-lisp字节范围可以超出文件的前512 MB吗?
我喜欢使用emacs-lisp进行各种数据处理任务,因为它(显然)与编辑器的高度集成.
当这样编写自定义函数时,我有时会遇到强加的限制most-positive-fixnum
.虽然我可以忍受并理解无法将整个1GB文件加载到缓冲区的原因,但该insert-file-contents[-literally]
接口也不允许访问超出文件的前512 MB的数据块,因为它需要作为参数的整数字节范围.
有没有办法绕过这个限制?据我所知,目前insert-file-contents
是emacs-lisp可用的最低级文件读取功能,insert-file-contents-literally
只是通过设置几个变量配置的第一个变体,即emacs-lisp似乎没有提供任何低级别fopen
类型文件界面.
奇怪的是在某些时候(可能使用自编译二进制)调用insert-file-contents-literally
浮点参数对我有用,允许访问高字节范围,代价是舍入错误的风险.使用ftp.gnu.org中最新的预编译emacs版本(编写时为24.3),这样做会产生(wrong-type-argument file-offset NUMBER)
错误.