从个人计算出发
卡尔·萨森拉思曾参与惠普、苹果与Amiga的系统开发,以Amiga多任务操作系统内核的设计为人所知。1997年1月20日,他发表公开信,认为软件日益庞大而安装、配置越来越繁琐,硬件速度的增长未相应变成用户能够掌握的能力。
他提出分两步工作:先完成新的脚本与控制语言,再研究与它结合的小型操作系统。语言不仅用来写应用,还拟承担配置、安装、进程间通信和分布式处理。当时他称语言已由多年业余设计转入全职开发,接近原型阶段,并向用户征求资助。他还设想,应用仍可用C等语言编写,部分系统交互则改由新语言承担。
参考:[1]
名称确定与原型延期
1997年3月4日的公告把原名LAVA改成REBOL。萨森拉思解释,旧名称公开仅约一个月便引起不少问题;新名称借用反抗复杂软件的意味,也力求避开既有计算机产品名称。后来常见的全大写形式,在这份公告中已经明确规定。
改名没有改变设计方向:他希望初学者能迅速写出小脚本,有经验的程序员又能继续利用更深入的语义。公告将简洁、一致、紧凑、可移植和可扩展列作需要共同兼顾的要求。不过,原定3月1日推出的alpha已经延期,作者没有承诺新的日期,而请读者等候网站公告。公告还预告参考手册的第一部分即将公布,已从网站移除的文件将在更新后重新上线。
参考:[2]
Core版本公开发布
明确的正式发布记录出现在公历1998年10月1日。设于加利福尼亚州尤凯亚的REBOL Technologies宣布REBOL/Core V1.0可免费下载,支持AmigaOS、BSD、Linux、Macintosh、Solaris和Windows等平台。公告同时说明,公司于同年3月注册,语言的具体规格、开发与测试已进行两年。
团队由萨森拉思领导,包括语言和网络架构人员。发布稿把它定位为网络消息语言,直接处理电子邮件、网页和文件传输,并回顾此前约十个月的alpha及beta试用,参与者包括网络管理员、教育者和网站维护者。正式版因此承接的是一段持续测试的过程;其中所说的免费使用,也与以后计划提供的商业升级和发行许可有所区别。
参考:[3]
早期脚本怎样工作
1998年《快速入门指南》所示的发行包包括解释器、初始化文件与用户定义文件,并附可用浏览器阅读的说明。用户可以在自己的定义文件中扩充环境,不必改动初始化文件。指南把数值、字符串、日期、电子邮件地址与网址都作为语言能识别的值,借此让常见信息直接进入程序。
其中一个求和例子写作“sum: func [a b] [a + b]”,再执行“print sum 50 100”,结果为150。冒号把sum与新建函数关联,第一个方括号组列出两个参数,第二个给出相加的函数体。调用时把两个数字交给它,再由print输出结果。这种把参数和动作组织成块的写法,使用户能够组合自己的功能。同一指南还展示了读取网页并发送邮件的操作,将网络输入和输出放在可组合的表达式里。
参考:[4]
解释器的实现取舍
实现者乔·马歇尔在2025年回忆1.0版时说,他首先关注语义是否正确,原本把解释器当作日后编译器的参考实现。它大量使用延续,把程序下一步的执行状态作为可保存和调用的对象;函数进入时保存延续,return便可借它恢复调用者的执行。
按他的说明,循环可以写成递归调用的普通函数,循环结构本身也用REBOL编写。这种安排有助于统一控制流程的语义,但带来解释开销。他后来制作了名为Sherman的原型,把程序编译到MIT-Scheme。这份当事人回忆解释了早期实现为什么重视一致行为而牺牲部分速度;后来的2.0版不再采用相同的尾递归方式,常用循环改由C实现,属于后续版本的另一种取舍。
参考:[5]
网络用途与发行渠道
1998年11月2日,公司宣布Core V1.0随Red Hat Linux 5.2的应用光盘提供。用户除了单独下载语言,还能在操作系统发行套装中取得它。Red Hat负责人罗伯特·扬在公告中表示,异构计算环境需要独立于平台的通信工具;萨森拉思则把它作为在Linux上编写网络脚本的手段。
公告列举的网站维护、文件传送、邮件过滤和新闻组处理,都需要把不同来源的信息交给程序加工。语言把网址、邮件地址和相应操作放在一起,正是为了缩短这类日常工作从想法到脚本的距离。该公告同时把若干尚待支持的操作系统列作未来计划,早期发行的范围与以后版本的扩展仍有清楚的时间区别。
参考:[6]
代码与数据共用块
块的作用不限于函数参数和函数体。后出的Core 2.3版《用户指南》(2005年版权)明确把块同时用于代码、列表、表格等有序数据;程序可以保存一个含动作的块,再在需要时用do求值。同一份数据结构因此能够先被保存或传递,之后再作为程序处理。指南还分别介绍load读取REBOL值和do求值脚本的用途,帮助辨别取得数据与执行代码这两个步骤。此处据2.3版说明其机制,不据此补定1998年1.0版的完整功能清单。
参考:[7]