分类 观点 下的文章

你是否对你喜爱的 Linux 发行版的最新发布版本的代号感到好奇?

比如说今年发布的 Linux Mint 18 的代号是 Sarah,而 Ubuntu 16.10 则叫做 Yakkety Yak,这样的名字还有很多很多。

代号这个问题真不是一个大事,毕竟这些代号不能代表不同的发行版功能之间的不同。然而,对于一个好奇的 Linux 用户来说,你或许想知道每个发行版本代号背后的逻辑。不管怎么说,代号都是每个版本不可分割的一部分,而开发团队也为此付出了不少的努力,对吧?

下面我将会告诉你这些最流行的 Linux 发行版的代号背后的故事,请安坐,有趣的部分即将来到 :)

Ubuntu 的版本号和代号

作为最流行的 Linux 发行版之一,Ubuntu 有着一个稳定的开发周期,每年 4 月份和 10 月份各发布一个主要版本。

其所发布的年份和月份构成了 Ubuntu 发布版本的版本号。它的版本号格式是 XX.YY,其中 XX 是年份后两位,YY 是月份。比如说 Ubuntu 16.04 就是 2016 年 4 月份发布的版本,而 Ubuntu 16.10 则是该年 10 月份发布的。之所以 Ubuntu 没有像其它软件一样有 1.0 版本,也只是因为其第一个版本是发布于 2004 年而已。

这么久以来,在过去的 11 年之中, 除了一次例外之外,Ubuntu 的所有版本都是 4 月份和 10 月份发布的。这唯一的一次例外是 Ubuntu 在 2006 年 4 月份的版本延迟了两个月,并因此其版本号叫做 Ubuntu 6.06,而不是 6.04。

另外,顺便提一句,每两年的 4 月份,都会推出一个长期支持版本(LTS),其支持期长达五年,而非 LTS 版本的支持期通常只有半年。

现在让我们看看 Ubuntu 的代号,你也许注意到了每个 Ubuntu 版本的代号都是两个相同首字母的单词,比如说, Ubuntu 14.04 叫做 Trusty Tahr,就是以两个“T”字母开头的。

Ubuntu 的代号一直遵循两个单词的规则,第一个是一个形容词,第二个则是一种濒危物种的名称(后来也包含一些传说生物,比如 独角兽 Unicorn 狼人 Werewolf )。在前面的例子中,Trusty 是一个表示“忠实的”的形容词,而 Tahr (塔尔羊)则是一种濒危的小物种动物。

另外一个有趣的事情是,这些字母的顺序是按字母表排列的(除了最开始时的两个),所以我们看到,Ubuntu 14.04 是 Trusty Tahr, Ubuntu 14.10 是 Utopic Unicorn, Ubuntu 15.04 是 Vivid Vervet ,明年即将发布的 Ubuntu 17.04 则是 Zesty Zapus 等等。至于再之后的版本,字母“Z”之后该用哪个,目前还没有得到 Canonical 官方的消息,我猜测或许是将没有用过的 A 和 C 用上,或许是从头开始循环,抑或是其它的可能也未尝可知。

如下是当前的 Ubuntu 的版本号和代号:

版本号代号发布日期支持期内核版本
桌面版服务器版
4.10Warty Warthog2004-10-202006-04-302.6.8
5.04Hoary Hedgehog2005-04-082006-10-312.6.10
5.10Breezy Badger2005-10-132007-04-132.6.12
6.06 LTSDapper Drake2006-06-012009-07-142011-06-012.6.15
6.10Edgy Eft2006-10-262008-04-252.6.17
7.04Feisty Fawn2007-04-192008-10-192.6.20
7.10Gutsy Gibbon2007-10-182009-04-182.6.22
8.04 LTSHardy Heron2008-04-242011-05-122013-05-092.6.24
8.10Intrepid Ibex2008-10-302010-04-302.6.27
9.04Jaunty Jackalope2009-04-232010-10-232.6.28
9.10Karmic Koala2009-10-292011-04-302.6.31
10.04 LTSLucid Lynx2010-04-292013-05-092015-04-302.6.32
10.10Maverick Meerkat2010-10-102012-04-102.6.35
11.04Natty Narwhal2011-04-282012-10-282.6.38
11.10Oneiric Ocelot2011-10-132013-05-093.0.0
12.04 LTSPrecise Pangolin2012-04-262017-04-263.2.0
12.10Quantal Quetzal2012-10-182014-05-163.5.0
13.04Raring Ringtail2013-04-252014-01-273.8.0
13.10Saucy Salamander2013-10-172014-07-173.11.0
14.04 LTSTrusty Tahr2014-04-172019-043.13.0
14.10Utopic Unicorn2014-10-232015-07-233.16.0
15.04Vivid Vervet2015-04-232016-02-043.19
15.10Wily Werewolf2015-10-222016-07-284.2
16.04 LTSXenial Xerus2016-04-212021-044.4
16.10Yakkety Yak2016-10-132017-074.8
17.04Zesty ZapusTBATBATBA

(表格来自维基百科

哈,Ubuntu 每次发布新版本都能扩充我们的英语词汇,也会让我们了解一种世界上需要关注的的濒危动物。

Linux Mint 的版本号和代号

作为 Ubuntu 的远亲,Linux Mint 也是一个 Debian 族系的流行发行版。现在让我们深挖一下 Linux Mint 的版本号和代号。

Linux Mint 是基于 Ubuntu 的,通常在 Ubuntu 发布后几个月内,Linux Mint 就会发布它基于 Ubuntu 衍生的版本。

但是不像 Ubuntu,Linut Mint 的版本号并没有遵循年和月的规则,只是简单的递增。所以 Linux Mint 15 之后就是 Linux Mint 16,Linux Mint 17 等等。这是主要版本,还会有维护的小版本,比如 Linux Mint 17.1、Linux Mint 17.2 等等。

这就是 Linux Mint 的版本号,现在让我们看看代号。每个 Linux Mint 版本,无论是主要版本还是维护版本,都有一个代号,而且和 Ubuntu 一样,都是按字母顺序递增的。

更有意思的一点是 Linux Mint 的代号都是女性名,而且以字母“a”结尾,而这些名字都来自于亚伯拉罕诸教。比如说 Linux Mint 17 的代号是 Qiana(国内戏称“钱啊”,其实发言应该是“奎阿纳”)。

主要版本会递增代号的首字母顺序,而通常维护版本会使用相同的首字母,不过在 Linux Mint 17.x 发生了变化,没有继续使用 Linux Mint 17 的“Q”,而是使用了“R”:Linux Mint 17.1 是 Rebecca, 17.2 是 Rafaela,17.3 是 Rosa。

如下是当前的 Linux Mint 的版本号和代号:

版本代号分支上游默认桌面环境发布日期LTS支持期
1.0AdaMainKubuntu 6.06KDE2006-08-27 未知
2.0BarbaraMainUbuntu 6.10GNOME2006-11-13 2008-04
2.1BeaMainUbuntu 6.10GNOME2006-12-20 2008-04
2.2BiancaMainUbuntu 6.10GNOME2007-02-20 2008-04
LightUbuntu 6.10GNOME2007-03-29
KDE CEKubuntu 6.10KDE2007-04-20
3.0CassandraMainBianca 2.2GNOME2007-05-30 2008-10
LightBianca 2.2GNOME2007-06-15
KDE CEBianca 2.2KDE2007-08-14
MiniKDE CEBianca 2.2KDE2007-08-14
Xfce CECassandra 3.0Xfce2007-08-07
3.1CelenaMainBianca 2.2GNOME2007-09-24 2008-10
LightBianca 2.2GNOME2007-10-01
4.0DarynaMainCelena 3.1GNOME2007-10-15 2009-04
LightCelena 3.1GNOME2007-10-15
KDE CECassandra 3.0KDE2008-03-03
5ElyssaMainDaryna 4.0GNOME2008-06-082011-04
LightDaryna 4.0GNOME2008-06-08
x64Ubuntu 8.04GNOME2008-10-18
KDE CEDaryna 4.0KDE2008-09-15
Xfce CEDaryna 4.0Xfce2008-09-08
Fluxbox CEUbuntu 8.04Fluxbox2008-10-21
6FeliciaMainUbuntu 8.10GNOME2008-12-152010-04
Universal (Light)Ubuntu 8.10GNOME2008-12-15
x64Ubuntu 8.10GNOME2009-02-06
KDE CEElyssa 5KDE2009-04-08
Xfce CEXubuntu 8.10Xfce2009-02-24
Fluxbox CEXubuntu 8.10Fluxbox2009-04-07
7GloriaMainUbuntu 9.04GNOME2009-05-262010-10
Universal (Light)Ubuntu 9.04GNOME2009-05-26
x64Ubuntu 9.04GNOME2009-06-24
KDE CEKubuntu 9.04KDE2009-08-03
Xfce CEXubuntu 9.04Xfce2009-08-13
8HelenaMainUbuntu 9.10GNOME2009-11-282011-04
Universal (Light)Ubuntu 9.10GNOME2009-11-28
Gnome x64Ubuntu 9.10GNOME2009-12-14
KDEKubuntu 9.10KDE2010-02-06
KDE x64Kubuntu 9.10KDE2010-02-12
FluxboxHelena MainFluxbox2010-02-12
XfceXubuntu 9.10Xfce2010-03-31
LXDEHelena MainLXDE2010-03-31
9IsadoraMainUbuntu 10.04GNOME2010-05-182013-04
Gnome x64Ubuntu 10.04GNOME2010-05-18
LXDELubuntu 10.04LXDE2010-07-18
KDEKubuntu 10.04KDE2010-07-27
KDE x64Kubuntu 10.04KDE2010-07-27
XfceXubuntu 10.04Xfce2010-08-24
FluxboxLubuntu 10.04Fluxbox2010-09-06
10JuliaMainUbuntu 10.10GNOME2010-11-122012-04
Gnome x64Ubuntu 10.10GNOME2010-11-12
KDEKubuntu 10.10KDE2011-02-23
KDE x64Kubuntu 10.10KDE2011-02-23
LXDELubuntu 10.10LXDE2011-03-11
11KatyaMainUbuntu 11.04GNOME2011-05-262012-10
Gnome x64Ubuntu 11.04GNOME2011-05-26
LXDELubuntu 11.04LXDE2011-08-16
12LisaMainUbuntu 11.10GNOME 3 with MGSE,MATE2011-11-262013-04
KDEKubuntu 11.10KDE2012-02-02
LXDELubuntu 11.10LXDE2012-03-09
13MayaMainUbuntu 12.04Cinnamon, MATE2012-05-222017-04
XfceXubuntu 12.04Xfce2012-07-21
KDEKubuntu 12.04KDE2012-07-23
14NadiaMainUbuntu 12.10Cinnamon, MATE2012-11-202014-05
XfceXubuntu 12.10Xfce2012-12-21
KDEKubuntu 12.10KDE2012-12-23
15OliviaMainUbuntu 13.04Cinnamon, MATE2013-05-292014-01
XfceXfce2013-07-12
KDEKDE2013-07-21
16PetraMainUbuntu 13.10Cinnamon, MATE2013-11-302014-07
KDEKDE2013-12-22
XfceXfce2013-12-22
17QianaMainUbuntu 14.04Cinnamon, MATE2014-05-312019-04
KDEKDE2014-06-23
XfceXfce2014-06-15
17.1RebeccaMainCinnamon, MATE2014-11-29
KDEKDE2015-01-08
XfceXfce2015-01-11
17.2RafaelaMainCinnamon, MATE2015-06-30
KDEKDE2015-07-23
XfceXfce2015-07-23
17.3RosaMainCinnamon, MATE2015-12-04
KDEKDE2016-01-09
XfceXfce2016-01-09
18SarahMainUbuntu 16.04Cinnamon, MATE2016-06-302021

不过,Sarah 是上述列表中唯一不以“a”结尾的代号,可能是因为没有合适的名称。

elementary OS 的版本号和代号

因为我们谈过了 Ubuntu 和 Linux Mint,让我们继续看看 Ubuntu 家族的另外一位: elementary OS ,它也是基于 Ubuntu 的一个以优美著称的 Linux 发行版。

elementary OS 的版本号都是 0.X 这样递增的,第一个稳定版本是 0.1,然后是 0.2,现在的稳定版本是 0.3——不知道什么时候可以变成 1.0。

开源软件界之前一直有个传统就是使用极其微小的版本,比如 0.1,0.01 这样的,直到作者或开发团队觉得已经非常成熟了,才有可能变成 1.0 这样的看起来正式一些的版本号。当然,也有的软件从未进化到 1.0 就消亡了。不过虽然是这种看起来像是测试版本的版本号,却往往并不代表其质量和功能不可靠。而现在也有一些软件开始飙版本号,比如 Chrome、Firefox 之类的,我觉得用不了几年,或许我们就会见到 xx 100 这样的软件了。

而 elementary OS 的代号则是采用神话中神的名字,通常这些来自于罗马神话或北欧神话中。比如现在已有的三个版本的代号是 Jupiter(罗马神话中的神王)、 Luna (月神,不是“撸哪” )、 Freya(北欧神话中的爱与美之女神,不过 0.3 之前的代号名是 ISIS ,后因避讳而改名),以及现在的 0.4 Loki(北欧神话中的火与恶之神)。

Debian 的版本号和代号

让我们回到 Ubuntu 、Linux Mint 和 elementary OS 的父系看看。Debian 是 Ubuntu 及其族系派生的来源,它的代号命名非常有意思。事实上,Debian 这个发行版本身的名字就来源于其创始人 Ian 及其女朋友 Debra 的名词合写,虽然 Ian 已经去世,但是其名字却会随着 Debian 而长存。

Debian 的版本号是递增的,这并没什么特殊的,不过有趣的是所有的 Debian 发行版本的代号都来自于《玩具总动员》这个动画片中的角色名。这就是你为什么看到 Debian 的代号是 Jessie) 和 Woody 这样的原因。

如下是当前的 Debian 的版本号和代号:

版本代号发布日期Linux 内核安全支持期长期支持期
1.1Buzz1996-06-172.0N/A
1.2Rex1996-12-12N/AN/A
1.3Bo1997-06-052.0.33N/A
2.0Hamm1998-07-242.0.34N/A
2.1Slink1999-03-092.0.34, 2.0.35, 2.0.36, 2.0.382000-10-30
2.2Potato2000-08-142.0.38, 2.2.192003-06-30
3.0Woody2002-07-192.2.20, 2.4.62006-03-30
3.1Sarge6 June 20052.4.27, 2.6.82008-03-31
4.0Etch8 April 20072.6.182010-02-15
5.0Lenny14 February 20092.6.262012-02-06
6.0Squeeze6 February 20112.6.322014-07-192016-02-29
7Wheezy4 May 20133.22016-04-262018-05
8Jessie25–26 April 20153.162018-052020-04
9StretchTBA4.10TBATBA
10BusterTBATBATBATBA
11BullseyeTBATBATBATBA

我觉得动画片《玩具总动员》里面还有很多角色,所以我们不用担心不够用了。

openSUSE 的版本号和代号

openSUSE 的第一个版本 10.2 发布于 2006 年。

SUSE 家族的 Linux 发行版的版本号相当的任性,包括发行版的名字也换来换去。最初,该发行版的名字叫做 S.u.S.E Linux,这个名字从 1994 年用到了 1998 年,后来改成了 SuSE Linux(把名字中的“.”去掉了),然后到了 2003 年的时候变成了 SUSE Linux Enterprise。在 2005 年的时候,Novell 公司宣布将 SUSE 专业版系列变为开源项目,由于当时 SUSE 的版本是 9.X,所以第一个 SUSE Linux 的版本是以 10.0 开始的。到 2006 年底的时候,再次决定改名为 openSUSE,第一个版本是 10.2。接下来将近十年倒是没再改名称,直到 2015 年 openSUSE 已经发展到 13.2 时,又又又改名成 openSUSE Leap,版本号嘛,好吧,就是这么任性,直接变成了 42.1(当然这个数字是有说法的)。

SUSE 家族最初发布的 Linux 发行版是没有代号的,后来可能是受到了其它 Linux 发行版的启发,从 openSUSE 11.2 开始有了代号。由于 openSUSE 以绿色为代表色,所以它的代号也都是各种绿色色调。

如下是当前的 openSUSE 的版本号和代号:

名字版本代号发布日期生命周期内核版本
标准Evergreen/ Major
SUSE Linux10.0N/A2005-10-062007-11-30N/A2.6.13
10.1N/A2006-05-112008-05-31N/A2.6.16
openSUSE10.2N/A2006-12-072008-11-30N/A2.6.18
10.3N/A2007-10-042009-10-31N/A2.6.22
11.0N/A2008-06-192010-06-26N/A2.6.25
11.1N/A2008-12-182011-01-142012-04-132.6.27
11.2Emerald2009-11-122011-05-122013-112.6.31
11.3Teal2010-07-152012-01-16N/A2.6.34
11.4Celadon2011-03-102012-11-052015-072.6.37
12.1Asparagus2011-11-162013-05-15N/A3.1.0
12.2Mantis2012-09-052014-01-15N/A3.4.6
12.3Dartmouth2013-03-132015-01-01N/A3.7.10
13.1Bottle2013-11-192016-012016-113.11.6
13.2Harlequin2014-11-04Q1 2017N/A3.16.6
openSUSE Leap42.1Malachite2015-11-04Q2 2017N/A4.1
42.2N/A2016-11-16Q2 2018N/A4.4

可能你都从来没听说过这么多的绿色色调,或许你会担心 openSUSE 会把绿色都用完,不过我觉得不用担心,毕竟连灰色都有 15 种之多,何况绿色呢?

你怎么看?

你喜欢哪个代号呢?你觉得是代号好记还是版本号好记呢?你认为需要代号吗?你又喜欢哪个发行版的代号命名方式呢?请在下面发表您的留言吧。

在 Mozilla 宣布计划阶段性废弃 SHA-1 算法签名的证书一年后,SHA-1 的使用量得到了显著下降。据 Firefox 的数据看,使用量从去年的 50% 降至今年三月的 3.5%,而到这个月仅占到加密流量的 0.8%。

Mozilla 最近宣布,从 Firefox 51 开始,该浏览器将对 SHA-1 签名的证书显示“不可信的连接”错误信息。Firefox 51 将发布于 2017 年 1 月,Mozilla 最初计划于 2017 年初拉黑 SHA-1 证书。

Mozilla 率先推动了 SHA-1 废弃

在去年秋天荷兰和法国的大学研究人员们发现可以非常容易地破解 SHA-1 加密后, Mozilla 率先推动了 SHA-1 废弃的活动。

在 Mozilla 制定了其阶段性废弃 SHA-1 算法的时间表之后,谷歌微软也跟着做了相同的决定,这些计划得到了 NIST 的支持。从 2016 年元旦开始,浏览器厂商们就禁用了之后新签发的 SHA-1 签名的 SSL/TLS 证书。

SHA-1 废弃基本上完成了

即便是有一些例外,甚至还有一些争议,但是在多数情况下,CA 厂商们都遵从了此次 SHA-1 禁用行动,SHA-1 市场份额的降低表明了他们的工作成果。

如今,之前签发的使用 SHA-1 签名的旧证书仍然被标为可信,但是从 2017 年元旦开始,浏览器厂商们就会将这类证书标为不可信,无论其签发日期是何时。

Mozilla 的加密工程师 J.C. Jones 说,特殊情况下,比如在内部站点或其它封闭性网络内,如果 SHA-1 证书是由手动导入的根证书签发的,Firefox 不会显示该警告。

在 2015 年底,Facebook 和 Cloudflare 提议允许 CA 厂商们为那些不支持 SHA-2 和其它算法的老浏览器签发 SHA-1 证书,但是这个倡议基本上没得到响应,尽管这有一定的意义。

我第一次看到运行着的 Linux 操作系统是在我的首份工作时,大约是在 2001 年。当时我在澳大利亚的一家汽车业供应商担任客户经理,和公司的 IT 工程师共用一间办公室。他做了一台 CD 刻录工作站(一个可以同时刻录好几张 CD 的巨大的东西),然后我们可以把汽车零配件目录刻录到 CD 并送给客户。刻录工作站最初是为 Windows 设计的,但是他一直没能让刻录机正常工作。最终他放弃在 Windows 上使用的念头并且换成在 Linux 上使用,刻录机完美工作了。

对我来说,Linux 的一切都是晦涩难懂的。大部分工作都在看起来像 DOS(LCTT 译注:磁盘操作系统,早期的个人电脑操作系统) 的命令行下完成,但它更加强大(后来我才认识到这一点)。我从 1993 年就开始使用 Mac 电脑,在那个时候,在我看来命令行界面有点过时了。

直到几年后——我记得是 2009 年,我才真正的认识 Linux。那时我已经移民荷兰并且在一家零售供应商那里找到了工作。那是一个只有 20 人的小公司,我除了做一个关键客户经理的正常工作,还无意间成了个一线 IT 技术支持。只要东西有了故障,他们总是会在花大价钱请外部 IT 顾问之前先来询问我。

我的一个同事因为点击了一封似乎来自 DHL(LCTT 译注:全球著名的邮递和物流集团 Deutsche Post DHL 旗下公司) 的电子邮件所附带的一个 .exe 文件而受到了一次网络钓鱼攻击。(是的,这的确发生了。)他的电脑被完全入侵了,他什么事都做不了。甚至完全格式化电脑都不起作用,好像病毒只靠它丑陋的脑袋就能活下来。我在后来才了解到这种情况可能是病毒被复制到了 MBR(主引导记录)里。而此时,为了节约成本,公司已经终止了和外部 IT 顾问的合同。

于是我帮助同事安装了 Ubuntu 操作系统让他继续工作,这的确很有效。他的电脑再次嗡嗡的运转了,而且我找到了他们工作必需的所有应用。我承认,从某些方面来说这不是最优雅的解决方案,不过他(包括我)喜欢这个操作系统的流畅度和稳定性。

然而我的同事在 Windows 世界形成的观念根深蒂固,他无法习惯新的使用方式,开始不停的抱怨。(很耳熟吧?)

虽然我的同事不能忍受新的使用方式,但我发现到这对我这个 Mac 用户已经不是一个问题。它们之间有很多相似点,我被迷住了。所以我在我工作用的笔记本电脑上又安装了一个 Ubuntu 组成双系统,我的工作效率提高了,让机器做我想做的事也变得更容易。从那时起我有规律的使用了几个 Linux 发行版,但我最喜欢 Ubuntu 和 Elementary。

当时我失业了,因此我有大量的时间给自己充电。由于我一直对 IT 行业很感兴趣,所以我致力于研究对 Linux 操作系统的管理。但是目前得到一个展示学识的机会太难了,因为我多年来所学的 95% 都不能简单的通过邮寄一份简历展示出来。我需要一个入职面试来展示我所知道的东西,所以我进行了 Linux 认证得到证书,希望能给我一些帮助。

我对开源做贡献已经有好一阵子了。刚开始时是为 xTuple ERP(LCTT 译注:世界领先的开源 ERP 软件)做翻译工作(英语译德语),现在已经转为在 Twitter 上做 Mozilla 的“客户服务”,提交 bug 报告等。我为自由和开源软件做推广宣传(取得了不同程度的成功)并且尽我所能在财政方面支持一些 FOSS(LCTT 译注:自由及开源软件)倡导组织(DuckDuckGo、bof.nl、EFF、GIMP、LibreCAD、维基百科以及其他)。目前我也在准备设立一个本地的隐私咖啡馆(LCTT 译注:这是荷兰的一个旨在强化网上个人隐私安全的咖啡馆/志愿者组织,参见: https://privacycafe.bof.nl/)。

除此之外,我已经开始写我的第一本书。这应该是一本涉及计算机隐私和安全领域的简易实用手册,适用于普通计算机用户,我希望它能在今年年底自主出版。(这本书遵循知识共享许可协议 CC。)至于这本书的内容,正如你预料的那样我会详细解释为什么隐私如此重要,以及“我没有什么需要隐藏“这种思想错的有多么离谱。但是最主要的部分还是指导读者如何避免让人讨厌的广告追踪,加密你的硬盘和邮件,通过 OTR(LCTT 译注:一种安全协议,为即时通讯提供加密保护)网上聊天,如何使用 TOR(LCTT 译注:第二代洋葱路由,可以在因特网上进行匿名交流)等等。虽然起初说这是一个手册,但我尽量会使用随和的语调来叙述,并且会根据精彩的我亲身经历的故事让它更加通俗易懂。

我依然爱着我所有的 Mac,只要买得起(主要因为它那伟大的构造),我还会使用它们,但是我的 Linux 一直在虚拟机里完成我的几乎所有的日常工作。没有什么不可思议的,不是自夸:文档编辑(LibreOffice 和 Scribus),建立我的网页和博客(Wordpress 和 Jekyll),编辑图片(Shotwell 和 Gimp),听音乐(Rhythmbox),以及几乎其他任何工作。

不论我最后怎么找到工作,Linux 永远都是我必用的操作系统。


via: https://opensource.com/life/16/5/my-linux-story-rene-raggl

作者:Rene Raggl 译者:fuowang 校对:wxy

Rust 是什么?

Rust 是一种系统编程语言,它运行速度惊人,并且可以避免几乎所有的崩溃、内存区块错误 以及数据竞争。你也许会质疑为什么我们还需要又一种这样的语言,因为已经有很多同类的语言了。这篇文章将会告诉你为什么。

安全性 vs. 控制权

你也许见过上面的图谱。一边是 C/C++,对运行的硬件拥有更多的控制权,因此它可以让开发者通过对所生成的机器代码进行更精细的控制来优化性能。然而这不是很安全,这很容易造成内存区块错误以及像 心血漏洞 这样的安全漏洞。

另一边是像 Python、Ruby 和 JavaScript 这种没有给予开发者多少控制权但是可以创建出更安全的代码的语言。虽然这些代码可以生成相当安全并且可控的异常,但是它们不会造成内存区块错误。

在图谱中间的区域是 Java 和一些其它混合了这些特性的语言。它们提供对运行的硬件部分控制权,并且尝试尽量减少漏洞的出现。

Rust 有点不太一样,它并没有出现在这个图谱上。它同时提供给开发者安全性和控制权。

Rust 的特性

Rust 是一种像 C/C++ 一样的系统编程语言,除此之外它还给予开发者对内存分配细粒度的控制。它不需要垃圾回收器。它的 运行环境 runtime 很小,运行速度接近于在裸机上的运行。它为开发者提供了代码性能更大的保证。此外,任何了解 C/C++ 的人都能读懂以及编写 Rust 的代码。

Rust 的运行速度非常快,因为它是一种编译语言。它使用 LLVM 作为编译器的后端,并且还可以利用一大堆优化。在许多领域,它的性能都要高于 C/C++。它像 JavaScript、Ruby 和 Python 一样,与生俱来就是安全的,这意味着它们不会造成内存区块错误、 野指针 dangling pointers 或者 空指针 null pointers

另外一个很重要的特性就是消除数据竞争。如今,大多数计算机都具有多个核心,许多线程并发运行。然而,开发者很难编写好的并行代码,因此这个特性除去了他们的后顾之忧。Rust 使用两个关键概念来消除数据竞争:

  • 所有权 Ownership 。每一个变量都被移动到一个新的位置,并防止通过先前的位置来引用它。每一个数据块只有一个所有者。
  • 借用 Borrowing 。被拥有的值可以借用,以允许在一段时间内使用。

在 Fedora 24 和 25 上使用 Rust

若要开始使用,只需安装软件包:

sudo dnf install rust

示例代码 helloworld.rs

fn main() {
    println!("Hello, Rust is running on Fedora 25 Alpha!");
}

编译并执行:

rustc helloworld.rs
./helloworld

在 Fedora 上可以执行以下命令来安装最新的测试版本:

sudo dnf --enablerepo=updates-testing --refresh --best install rust

via: https://fedoramagazine.org/rust-meets-fedora/

作者:Sumantro Mukherjee 译者:OneNewLife 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

开源软件让谷歌可以快速而有效地构建系统而不用重复造轮子,可以让我们专注于解决新问题。我们站在巨人的肩膀上,因此我们熟谙这一切。这就是为什么我们支持开源,而且让谷歌人可以轻松地将他们内部开发的项目以开源方式发布的原因。

今天,我们发布了我们的第一个开源成绩单,展示我们最流行的项目、分享一些数据,并介绍一些我们在 2016 年发布的项目细节。

迄今为止,我们已经开源了超过 2 千万行的代码,你可以在我们的网站上找到我们最知名的项目的列表,下面是其中的一些:

  • Android - 用于移动设备的软件族,包括操作系统、中间件和关键性应用。
  • Chromium - 它包括 Google Chrome 浏览器背后的 Chromium 软件和 Google Chrome OS 设备背后的 Chromium OS 软件。
  • Angular - 一个 JavaScript 和 Dart 的 web 应用框架,关注于开发者的生产力、开发速度和测试能力。
  • TensorFlow - 一个使用 数据流图 data flow graphics 的数字计算库,支持从数据中心到嵌入式设备的跨平台的大规模机器学习。
  • Go - 一种静态类型的编译型编程语言,富有表现力、简洁而高效。
  • Kubernetes - 一个可以自动分发、操作和缩放的容器化应用系统。
  • Polymer - 一个构建于 Web 组件 API 之上的轻量级库,用于构建在 Web 应用中可重用的封装元素。
  • Protobuf - 一个可扩展的、语言无关和平台无关的串行化结构数据的机制。
  • Guava - 一套 Java 核心库,包括新的集合类型(比如 multimap 和 multiset)、 不可变集合 immutable collections 、知识图谱库、 函数类型 functional types 、内存缓存,以及并发 API/功能、I/O、哈希、 基类型 primitives 、反射、字符串处理等等。
  • Yeoman - 一个强壮而自足的框架工具集,它包括可以帮助开发者快速构建优美而引人入胜的 Web 应用的库和工作流。

统计谷歌开源的全部软件有点困难,不过我们可以从开源到 GitHub 上这部分软件获取一些有趣数据。现在谷歌在 GitHub 上已经有了 84 个组织和 3499 个项目仓库,而今年就创建了 773 个仓库!

谷歌人使用了从汇编到 XSLT 等等不计其数的各种编程语言,但是哪一个才是我们的最爱?GitHub 可以帮我们找到在这些软件仓库中我们使用最多的编程语言:

  1. JavaScript
  2. Java
  3. C/C++
  4. Go
  5. Python
  6. TypeScript
  7. Dart
  8. PHP
  9. Objective-C
  10. C#

我们可以通过 BigQuery 来了解各种 GitHub 开源数据,比如空格和制表符的使用对比最流行的 Go 语言软件包等等。谷歌人在 GitHub 上的开源项目提交了多少次?我们可以通过搜索 Google.com 的邮件地址来知道谷歌人的最低限度的提交量,比如使用这样的查询:

SELECT count(*) as n
FROM [bigquery-public-data:github_repos.commits]
WHERE committer.date > '2016-01-01 00:00'
AND REGEXP_EXTRACT(author.email, r'.*@(.*)') = 'google.com'

用上面的查询,我们发现从今年开始,谷歌人在 GitHub 上的开源项目做了 142,527 次提交。这个数据集始于 2011 年,如果从那时开始统计,那么提交次数是 719,012。不过,这只是最低限度的数据,因为我们没有统计谷歌人使用其它邮件地址的提交。

让我们来看看 2016 年有哪些令人激动的地方。我们发布了开源软件硬件数据集,今年发布的有这些:

Seesaw

Seesaw 是一个基于 Linux 虚拟服务器(LVS)的负载平衡平台,是由我们的 SRE 工程师用 Go 语言开发的。就像其它的项目一样,它也是为了解决我们切身之痒而产生的。

在我们发布它的公告中提到:“我们需要有为 单播 unicast 选播 anycast VIP 控制流量的能力,也需要对 NAT 和 DSR(也叫 DR)进行负载平衡,以及针对后端进行足够的健康检查。所有这些我们需要一个可以让我们轻松地管理的平台,包括自动分发改变的配置。”

供应商安全评估调查表 Vendor Security Assessment Questionnaire (VSAQ)

每年我们需要评估几百个供应商的安全情况,并且我们开发了一个流程来通过 VSAQ 自动化许多初始信息的收集。许多供应商发现我们的评估表直观而灵活,所以我们决定把它分享出来。VSAQ 框架包括可扩展的调查表模版,覆盖了 Web 应用、隐私程序、基础架构以及物理和数据中心安全。你可以在我们的发布公告中了解更多信息。

OpenThread

OpenThread 是由 Nest 发布的一个 Thread 协议的完整实现,用于家庭连接设备。它非常重要,这是由于这个领域如我们所见是非常碎片化的。OpenThread 的开发得到了 ARM、微软、高通、德州仪器等主要厂商的支持。

Magenta

我们可以使用机器学习来创建吸引人的艺术和音乐吗?这个问题的答案就是动画 Magenta,这个项目来自于谷歌大脑团队,基于 TensorFlow。它有助于推动机器智能在音乐和艺术创作中的发展,并为艺术家、程序员和机器学习研究人员构建了一个协作社区。阅读它的发布公告了解更多信息。

Omnitone

虚拟现实(VR)如果没有 空域音频 spatial audio 还做不到身临其境,而许多的 VR 开发都是在专有平台上进行的。 Omnitone 是一个由 Chrome 团队成员构建的开源库,它可以给该浏览器带来 空域音频 spatial audio 。Omnitone 基于标准的 Web 音频 API 构建,可以提供具有现场感的体验,也被用于类似 WebVR 这样的伴生项目。阅读该项目的发布公告了解更多信息。

科学日报 Science Journal

当今的智能电话带有许多传感器,可以告诉我们周围很多有趣的信息。我们启动科学日报项目,以帮助教育工作者、学生和科学爱好者们利用这些传感器。更多信息可以参阅我们的发布公告

Cartographer

Cartographer 是一个以 2D 和 3D 方式即时定位与地图构建(SLAM)的库,支持 机器人操作系统 Robot Operating System (ROS)。它合并了多种传感器的数据,这个库可以计算位置和地图表面。这是自动驾驶汽车、UAV 和机器人的关键因素,并在室内地图方面做了很多努力。关于 Cartographer 的更多信息可以参阅其发布公告

这只是我们今年发布的一小部分例子,请继续关注谷歌开源博客,为谷歌的开源软件、硬件和数据而欢呼吧。

近日,老王获邀参加了阿里云举办的年度盛典 2016 杭州云栖大会,第一次赶赴了传说中的云栖小镇(这地方名字真的就叫这个,我一直以为只是个别称呢),参加这场前后持续了四天的盛会,也是第一次参加了还有夜间场次的技术会议。

从五通一平,到人工智能 ET;从金融云,到互联网级操作系统,物联网,城市大脑。为期四天的会议真是带来了太多信息,以至于我只能选择性的参与一些场次,今天还有朋友问我,有没有记录会议笔记可以给她学习下。说实话,还真没专门记些什么,不过我把自己印象深刻的几个地方写出来,算是分享给大家吧。

在第一天的主论坛上,马云做了重头讲演,对他的讲演已经有了太多的媒体披露和阐述了,我就不赘述了。老王还是以一位专业技术人员的角色来谈谈自己的感受吧。

在主论坛上,阿里云资深总监李津回顾了从 2009 年开始,阿里云飞天系统写下第一行底层代码到今天,飞天给大数据,人工智能等领域带来的变化,并发布了一系列的新产品。

其中有几个谈到的地方值得关注,首先是一些趋势和数据的变化:

  • 金融是传统 IT 产业皇冠上的明珠,也是云计算的金线。今天已经有 2000+ 以上的金融机构跑在阿里云上。
  • 阿里云在上一个季度实现了 156% 的增长,并发布了一站式软件交付系统,即将改变了技术生态与企业的连接模式。
  • 阿里云的基础设施已经覆盖了全球 600 个节点。
  • 传统 IT 存储市场急速下降,阿里云存储市场上升 500%
  • 云市场增速 652%,已经有数千万的 ISV 提供服务。
  • 华北 3 数据中心即将开服,中国最大的绿色数据中心,数据中心能源效率(PUE)指标可达 1.13
  • 阿里云将国家地震局的分析计算从 10 个月降低到了 18 个小时。

这里面颇有几个令人吃惊的数据,不过我更关注的技术和开源领域的变化:

  • 宣布阿里云和 Docker 达成深度合作。李津认为,只要中国云计算生态做的足够好,世界终将会拥抱中国云计算生态。
  • 阿里云正式开源 AliSQL,后续会不断推进开源。我目睹了 AliSQL 在 GitHub 上的代码库从“Private” 变成了“Public”的那一刻,想必开源界会有不少人会去亲自 review 代码看看。
  • 计算和存储分离的架构带来更高效率。主流开源界开始拥抱中国云计算,OSS 被诸多开源软件原生支持。
  • CDN 支持 HTTP/2,高速,安全,可靠的 CDN 时代来临。

此外,在网络安全方面,阿里云安全体系保障了 G20 期间 200 多家政务系统,应对了世界级的安全挑战。阿里云金融云平台通过公安部云计算等级保护四级,这是当前最高安全等级。

以及,Intel 首次为中国云计算定制 CPU,具有高主频高密度等特点,软硬件结合将改变底层生态。这挺让人震撼的。

当然,还有一个消息就是,降价了。技术让阿里云成本更低:核心产品降价10%。同时对于云服务,云数据库,云安全及云储存产品两年 7 折,三年 5 折。核心产品按量付费直接降价50%。据说,过去一年已经降价 17 次了!

除了主论坛,老王专门参加了开源技术专场,亏我去的早,坐到了第一排,亲见了 MySQL 之父 Michael Widenius (即 Monty)和 Docker 公司的生态开发总监 John Willis (他也是一位全球有名的 DevOps 专家)。

从右向左分别是:Michael Widenius、John Willis 及其随员。在讲演前后,一大批与会者纷纷与两位大神级程序员合影留念(没有人与美女随员合影,不知道她内心的感受是……)。

开源专场是由阿里云技术专家唐容主持的,并做了开篇演讲《阿里开源发展与生态》,算是比较系统的讲了阿里开源的发展和理念吧。

其后两位国外大神的英文演讲还是干货满满,感觉不错,就是同声传译的女生好像对技术不太了然,翻译这种技术演讲感觉很辛苦。说到 AliSQL 开源仪式,还真是个仪式,现场为大家展示了如何将一个“Private”的 GitHub 仓库变成“Public”的。 :D

次日,我去听了 YunOS IoT 峰会。YunOS 事业群总裁张春晖做了开篇演讲,其中有几个内容引起了我的注意,分享给大家:

  • APP 的孤岛是无法用 APP 时代来打破的,所以一定要用一个新的方法来打破,那就是服务,那就是一个服务的世界、一个万物互联网的时代所带来的。
  • 怎么才能打破设备的孤岛?什么是最根本的东西,那可能就是芯片,从芯片入手,可能就可以实现打破设备的孤岛。
  • 当我们能打破APP的孤岛,设备的孤岛,最后就有可能演变到万物互联网。

除了演讲,在会场和展台也看到了很多 YunOS 的应用, 有机器人、智能家电、互联网汽车等等。不过,我更感兴趣的是,晚上举办的开发者之夜。说起来,我还从来没参加过晚上举办的技术大会——可见这场大会的信息密度有多大了。

草草吃了一点晚饭后,就赶快去开发者夜场了,YunOS 技术专家讲到了 CAF, 据其介绍,这是一个开发框架,作为专为服务和互联而生的框架,它可以大幅降低开发门槛,无需安装即可使用,不仅可以快速提升应用分发能力,同时还可以全面覆盖多终端而无需单独开发。据其后讲演的掌阅副总裁贾生亭说,借助于 YunOS 大数据分析能力及精准的用户画像,人均阅读时间增长 40%,付费转化率提升 45%。

感觉 CAF 对 YunOS 的生态建设起到了很重要的作用,应该去试试: http://open.yunos.com/

最后,还有个小花絮,这场大会里, Costa 咖啡专门定制了飞天(APSARA)咖啡——“听说咖啡产代码”,喏就是这个:

作为一位老程序员,这一定得喝一杯啊。于是我就专门跑遍了整个会展中心,终于找到了 Costa 咖啡店,并出示了定制卡片。然而,我得到的是这样的:

瞧人家的代码,再看看我的代码……

参加完 2016 杭州云栖大会之后,当飞机着陆到北京首都国际机场,走出机场时,我又见到了: