Haskell中的Web引擎
瓦多
瓦多是Haskell网我在两个晚上编写的浏览器是以下内容的高潮:
- 想演示一些好的Haskell库。
- Haskell中的跨平台sdl2包非常有用适用于Linux、OS X和Windows。
- 像90年代的那种简单的网络浏览器很漂亮直接向前执行。
我认为这个项目是成功的。代码什么都不是特别的,而且它不漂亮,也不高效。
引用页面:
这是一个能够加载网页的演示程序并将其渲染为90年代初的样子。它支持布局文本,标题、内联和块元素的不同字体大小,超链接,粗体和斜体。它支持鼠标滚轮滚动,也是。
我在几个晚上写了这篇文章,因为它看起来直截了当考虑到目前可用的库,可以这样做。这是个好兆头哈斯克尔。还有,我有一种说不出的直觉告诉我在网络仍然存在的今天,也许值得庆祝可以以最简单、最早的形式查看。
软糖
与此同时,我发现1994年哈斯克尔福吉特人的网络浏览器。
如果某一天该页面离线,请引用以下内容:
WWWBrowser是一个原型WWW浏览器,在功能使用Fudget库的编程语言Haskell。WWW浏览器为主要实施于1994年,当时NCSA Mosaic是占主导地位的网络浏览器,并在1997年和1998年进行了一些更新。
WWW浏览器也在WWW浏览器–WWW客户端一章中介绍在福吉兹论文中。
- 它支持表单。
- 它支持像[:-)]这样的内联图像。GIF、PNG、JPEG、PNM和XBM格式已被识别。PNM和GIF图像用Haskell代码。对于其他格式,使用外部程序(来自PBMPLUS包)。抖动(或仅颜色重映射)由WWWBrowser本身完成。(不幸的是,这有点慢用于大图像。)(参见图形文件格式页(2D规范)有关这些和其他图像文件格式的信息。)
- 内联图像是并行获取的。这意味着页面包含许多小的内联图像,如IconBAZAAR,在中加载速度更快WWWBrowser(尽管图像处理速度较慢)比浏览器中的,就像NCSA Mosaic(WWWBrowser当时的主流浏览器显影),一次获取一张图像。
- 它了解用于信息检索的大多数协议在WWW中:http、ftp、nntp(新闻)、gopher和telnet。它也可以阅读本地文件系统中的文件和目录。当与nntp和ftp服务器,它对多个传输使用相同的连接,而不是而不是为检索的每个文档连接/断开连接。
- 它可以直接或通过代理连接到Internet。
很难相信当时有一款外观相当可行的浏览器,在哈斯克尔!这太令人印象深刻了!福吉特的工作真的还在今天真是太棒了。我已经开始并将继续通读他们的文档和想法。
反思浏览器
你可能认为(或不认为)600中的跨平台浏览器线条很好。但这个练习也有助于我了解90年代的情况和人们的期望之间存在着鸿沟今天。Vado不会做任何你在现代网络中所期望的事情浏览器。以下是我能想到的一些事情:
- 支持cookie
- 正在加载图像
- 缓存资产
- 历史向前/向后导航
- 处理过多的自定义表单输入(日期、整数、滑块、,下拉菜单、多选项、基本文本、文本区域、按钮等)
- 解析和处理甚至旧的CSS2,而不需要现代的CSS3(和自定义字体)
- 解析和处理普通的旧JavaScript,更不用说更现代的了JS公司
- 为JavaScript提供大面积的API,包括但不限于
- 基本DOM API及其所有事件(键盘、计时器、鼠标、,表单输入)
- 绘图API(画布)
- 网络API(AJAX、网络套接字)
- Cookie和web存储
- 窗口API(导航、刷新等)、警报、提示
- 音频、视频元素、网络工作者…
- 管理历史记录、地址、书签、,饼干等。
也要高效、安全地以某种方式完成所有这些事情与其他引擎预期的方式相匹配(怪癖和所有)提供。如果你想让任何人继续使用它,你必须除了高昂的维护成本外,继续与网络保持同步基本web浏览器的。
接近单一文化
目前我们有一个不幸的状况,我们过去有这些渲染引擎:
- 闪烁(铬)
- KHTML(康奎罗)
- 网络工具包(Safari)
- 三叉戟(IE)
- EdgeHTML(边缘)
- 普雷斯托(歌剧)
- 壁虎(Firefox)
不幸的是,它们被分解为:
- 闪烁(Chromium、Opera、Edge)–由谷歌控制
- KHTML(Konqueror)–由KDE控制
- WebKit(Safari)–由Apple控制
- 壁虎(Firefox)–由Mozilla控制
我希望这种趋势不会继续下去。谷歌已经在尝试使用GMail提供的功能销毁我们知道的电子邮件。Mozilla致力于保持网络的多样性和竞争力。我是不确定苹果是否会效仿微软和Opera的做法为Safari闪烁。
我们拭目以待。