在麻省理工学院试作
Curl是麻省理工学院计算机科学实验室的一项网页语言研究。史蒂夫·沃德和马特·霍斯特特在后出的作者论文中,将研究起点记为1995年,并说明1995至1998年的工作得到美国国防高级研究计划局支持。早期论文署名还包括戴维·克兰兹、科顿·西德和克里斯·特曼。
几位参与者分担了不同工作。作者回顾把MIT原型的大部分实现归于克兰兹,把重要架构决定归于特曼。团队研究的对象是网页内容怎样表达与执行;它和通常写作cURL的网络传输工具是两个独立的软件项目。
让功能随着作者的技能增加
团队称自己的目标为“缓坡系统”。当时网页作者从静态文字走向交互内容,往往须从HTML转入另一种脚本或程序语言。不同部分有自己的名称、数据表示和调用规则,简单修改可能突然要求一整套新知识。
Curl希望保留直接写文字的入口,同时让排版、按钮、变量、过程和对象共用语言框架。所谓缓坡,是让增添一点功能时只需逐步学习相应机制,而不是每跨一个层次就重写文档。它仍然要求复杂程序具备相应的编程知识。
一段文字也可以包含计算
MIT保存的早期论文草稿给出一个很小的例子:普通文字中插入“{bold ...}”即可加粗,插入“{+ 10 4}”则得到14。大括号标出需要交给语言处理的部分,外面的文字直接成为文档内容。
同一稿件还演示海滩球订单:作者把颜色和数量定义为动态对象,以单选按钮改变颜色,以按钮增减数量,正文里的订购说明随之更新。显示的文字、用户控件和运算共享变量;这是一套界面机制的实际程序示例,不是把另一段程序的结果截成图片放入页面。
参考:[2]
排版器和编译器也在同一系统中
早期实现包含平台无关的图形界面、生成x86及Sparc本地代码的增量编译器、对象检查器、符号调试器和浏览器。图形由层级对象组成,水平框、垂直框、表格与段落负责安排子对象。开发者可以定义新的对象和操作,让文档继续扩展。
系统大量使用Curl自身编写。启动编译器先把不含排版的部分转成C,再与部分手写的底层C代码连接。普通作者可以不声明复杂类型;需要效率时,程序员再提供类型信息,让编译器采用较直接的数据表示。这些选择把易上手和执行效率放在同一个实现中处理。
参考:[2]
1998年可核查的公开测试版本
项目下载说明明确写道:截至1998年1月30日,Curl 0.8已可供测试,是初步Alpha版本,仍可能有错误和文档缺漏。下载页列出SunOS/Sparc、Win32/x86和Linux/x86,说明程序可打开本地.curl文件,也可从服务器进入欢迎页、文档和示例。
下载页还提供源代码树与离线文档,并列出断网时启动欢迎页的已知问题。到1998年1月30日,这个早期实现已经开放测试。MIT原型的工作随后由Curl公司继续推进,2002年作者稿把大学阶段和公司阶段分开回顾。