VMS软件公司有多大?
How Big Is VMS?

原始链接: https://vmssoftware.com/resources/blog/2025-03-31-how-big-is-vms/

一位VMS研究员调查了四个版本的VMS操作系统(V6.2、V7.2、V8.2和V9.2-3)的代码规模(代码行数),重点关注15个具有代表性的系统功能,不包括分层产品、网络、编译器等类似组件。分析统计了.B32、.B64、.C、.MAR、.M64和.S文件中源代码的行数,忽略注释和空行。研究表明代码规模显著增长,从V6.2到V9.2-3几乎增长了两倍。虽然承认并非所有版本都包含所有代码,但总共有409个功能。所选择的15个功能包含近两百万行代码,平均每个版本增加了40万行代码。C语言成为主要语言是关键因素,标志着从最初使用的BLISS和MACRO-32语言的转变。未来的研究可能会探索特定功能的增长模式。

一个Hacker News帖子讨论了VMS在现代计算中的相关性。讨论始于指向VMS Software, Inc. 的链接,并质疑其使用是否仅限于遗留应用程序,因为迁移存在困难。一位用户承认VMS具有传奇般的可靠性,但质疑其许可模式和厂商锁定,相比之下Linux是开放的。另一位在90年代末和00年代初广泛使用VMS的用户强调其内置的文件系统版本控制是一个有益的功能,但他认为它现在仅限于遗留环境中使用。另有人补充说,其他较旧的系统,如MCP和z/OS,仍在得到支持。最后一位用户回忆起在90年代后期使用VMS的情况,并指出它的衰落,称其为古老的,并认为将其用于新项目会有问题,尽管它以前的功能很强大。
相关文章

原文
How Big Is VMS?

This question was asked during my Boot Camp presentation last fall in Boston, and over the past 35 years dozens of times people have asked, how big is VMS? That translates into "how many lines of code are in VMS"? I thought it was time to at least make a stab at pursuing some insight into the answer. I wrote some command procedures to count the number of source lines in .B32, .B64, .C, .MAR, .M64, and .S files. Not counted are blank lines and lines beginning with the standard comment characters and miscellaneous directives for the particular language.

First, I needed a baseline definition of 'VMS'.

  • Does it include layered products, networking, compilers, RTLs, debuggers, open source, etc.?
  • Is it the code on a particular running system?
  • Does it include command procedures?

I said 'no' to all of the above and as a starting point chose 15 facilities which are representative of identifiable components of the system: ACPI , AUDSRV, CLUSTER, DCL, DRIVER, F11X, JOBCTL, LAN, PCSI, RMS, SCSI, SDA, SHADOWING, SYS, XFC.

I chose the following releases for comparison:

  • V6.2: May / 1995 - port to Alpha
  • V7.2: Feb / 1999 - kernel threads, 64-bit APIs, Galaxy, and more
  • V8.2: Feb / 2005 - port to Itanium
  • V9.2-3: Dec / 2024 - port to x86

The LINES.COM procedure, which invokes a set of nested procedures, fetches all of the source files with the extensions mentioned above, in the SCSI facility that are in the release stream V8.2, gets the line counts, and produces the text file below. This was done for each of the 15 facilities in each of the four release streams.

MTMERU-V8.4-2L2$ @lines scsi "V8.2" V82 

MTMERU-V8.4-2L2$ type [.scsi]total-line-counts-v82.txt

WORK10:[GRANT.LOC.SCSI.BLISS]TOTALS.TXT;1

Total source files = 2
Total source lines = 7770

WORK10:[GRANT.LOC.SCSI.C]TOTALS.TXT;1

Total source files = 64
Total source lines = 119609

WORK10:[GRANT.LOC.SCSI.M64]TOTALS.TXT;1

Total source files = 1
Total source lines = 885

WORK10:[GRANT.LOC.SCSI.MAR]TOTALS.TXT;1

Total source files = 34
Total source lines = 38414

WORK10:[GRANT.LOC.SCSI.S]TOTALS.TXT;1

Total source files = 0
Total source lines = 0


        Grand Totals

Total source files = 101
Total source lines = 166678
MTMERU-V8.4-2L2$

Here are all the totals for V8.2. There is a similar chart for each of the other three releases.

Here is the lines of code summary for the four releases. You can find a graphical representation of the table below at this link.

Not all code in a facility is in every release, but it is or has been in one or more releases.

There are 409 facilities in the VMS source pool - some big, some small. They contribute to the VMS operating system build for one or more platforms.

These 15 facilities chosen comprise close to two million lines of code and their total has nearly tripled in size during the last three releases.

There were many changes and additions to VMS between V8.2 and V9.2-3 prior to the x86 porting work. Given a relatively small delta, each release has increased by about 400,000 lines of code. The emergence of C code is another aspect of VMS that is part of the story. In the beginning, VMS was written in BLISS and MACRO-32 (VAX assembler). During the latter stages of the port to Alpha, we declared that all new code would be written in C. There are exceptions, of course, but for the most part we followed this guideline. Not shown in the data above, but part of this investigation, is the following which reflects the 15 facilities. (The 31 C modules in V6.2 were all written during the port to Alpha.)

It might be interesting to look into why some facilities have changed so much over time. Some seem obvious but others do not. If you have suggestions for a future post, please speak up.


Mar 31st, 2025

VMS Researcher

联系我们 contact @ memedata.com