Microsoft releases Rotor, a Shared Source to Open Source speed competition
Mood
2002.03.28
Article Type: News
Difficult level: 1/9
Version: 1.48
I think this is a meaningful thing in the DOTNET world, and some extent it will affect Microsoft and his hostile people in the next few years. Of course, we don't know how to influence and vibrate. However, I think the current Microsoft shows more "Steve Ballmer" features. Maybe we need to re-market Microsoft in our previous mind, it should be said that he is changing.
Yesterday, March 27th, Redmond announced the release code of the CLI (Common Language Infrastructure) and C # implementation released. It is only more than 1 million lines compared to Netscape Navigator 5.0, but this millions of lines of code (nearly 1400 files) are enough to meet the heart of C # enthusiasts, and they will be Excited.
Redmond explained that this is mainly to promote the innovation of programming language and XML Web Services research, and mainly for university and academia, analysts also believe that such actions will not cause too much business impact, while Microsoft critics believe this Mainly in order to prevent Java's growth and the development of the development source code for Linux. Some observers believe that the current development of Linux, especially desktop applications, undoubtedly resembled the current move to touch their sensitive ideas.
8 months ago Microsoft was accused of exaggerating the DOTNET open structure and cross-platform skills, July 2001, the famous Linux desktop environment GNOME developer Ximian has started starting a name for improved development tools. A.NET, called Mono, aimed to develop Linux version. However, it seems that Microsoft and his partnership rate will be advanced. And October 2000 Microsoft submitted to ECMA's specifications for C # and CLIs, until the approval of ECMA in December 2001, Microsoft continued to put pressure to Sun, compared to 2000, Sun Company withdrawn His own Java ECMA application process.
C # (ECMA-334) and CLI (ECMA-335) are core and key technologies for Microsoft .NET Framework multilingual support strategies. C # As a modified component-oriented programming language in the C and C families, CLI is a good subset of .NET Framework, mainly providing a runtime environment and the basic class library for XML Web Services. Redmond's Shared Source Cli Beta included these two parts or more.
However, Microsoft is very emphasizing that its Shared Source is nature rather than Open Source, which is in line with the company's understanding of GPL (GNU General Public License), honestly says that they don't believe that GPL can guarantee their own code and power. Control, not willing to have any relationship with GPL, especially the core of our own core. However, Microsoft's own product is followed or supported, and Andy Patrizio has been surprised to find that Microsoft has at least one such product: Interx. Microsoft Some tools for this product are very annoying under GNU GPL, but in the previous License's respect, Microsoft has to continue the code after Release under GPL. Microsoft is not a small company, so he will not easily approach the GPL, so as long as there is access to the GPL, then all products may become GPL (Don Box says the GPL is a "viral licens") if Studying learning and progress requires public source code, Microsoft generally chooses Shared Source. Window CE.NET and this time Shared Source CLI, etc., even Windows 2000 / XP / .NET Server is like this. Although Microsoft is considered extremely rogue by his opponent, in essence, he meets the most basic rules of American business: You can choose not to play this game, but as long as you enter, you must abide by all the rules in this game. Ok, no matter why "Open Source" is not "Open Source", you can see what this 11m software package can do. (Do not like translation, I don't translate, forgive me)
What is the character? The Shared Source CLI Archive Contains The Following Technology in Source Code form:
L An Immnation of the Runtime for the Common Language Infrastructure (ECMA-335) That Builds and Runs ON Windows XP and Freebsd
l Compilers That Work with The Shared Source Cli for C # (ECMA-334) And JScript
L Development Tools for Working with the Shared Source CLI Such As Assembler / Disassemblers (ILASM, ILDASM), A Debugger (CORDBG), Metadata Introspection (MetaInfo), And Other Utilities
l The Platform Adaptation Layer (PAL) Used to Port The Shared Source CLI from Windows XP to FreeBSD
l Build Environment Tools (Nmake, Build, And Others)
l Documentation for the importation
l Test Suites Used to Verify THE IMPLEMENTATION
What can I do with it? There is a wealth of programming language technology in the Shared Source CLI It is likely to be of interest to a wide audience, including:. L Developers interested in the internal workings of the .NET Framework can explore this implementation of the CLI to see how .
l Teachers and researchers doing work with advanced compiler technology. Research projects into language extensions, JIT optimizations, and modern garbage collection all have a basis in the Shared Source CLI. Modern compiler courses can be based on the C # or JScript languages implemented on the CLI .
L people developing Their own CLI Implementations Will Find The Shared Source Cli An Indispensable Guide and Adjunct To The Ecma Standards.
How to get it?
Http://download.microsoft.com/download/.netframesdk/cli/beta1/wxp/en-us/sscli20020326.tgz
FAQ?
Http://msdn.microsoft.com/downloads/default.asp?url=/downloads/sample.asp?url=/msdn-files/027/001/901/msdncompositeoc.xml
Required installation environment
ON Windows XP you will need:
l Visual Studio .NET
l Perl 5.6 (Available from http://www.perl.org)
l Archiving Utility of Choice - Winzip or Other
You will need freebsd 4.5 if you work with the shared source cli on all freebsd.
prompt:
l Officially stated that there is currently not supporting Windows 2000 but has already tried and runs successfully:
I Just Built It On Win2000 and Ran The Test Suite (CD Tests; Rrun.pl).
Here Are The Results:
Rrun: Summary:
RRUN: Run Time - 0H 36M 49S
RRUN: Processed - 1574
RRUN: Pass - 1574
RRUN: FAILED - 0
Excellent!
(The above information is from the news group. Some people think that XP is to promote the promotion and they hope that more people will work in XP in the future, the whole rotor team is working in the XP environment, so it will not guarantee whether the future will There is a change) L If you are not familiar with FreeBSD, be careful about your dual boot system and backup (you can consider trying to try a VMware Workstation software).
l Find the appropriate version of Perl
l The latest book about SSCLI,
l Shared Source CLI's code named "rotor", you may meet it on the newsgroup and some internal websites.
l No matter how excited or flustered, you must read ReadFirst.html after the first time after Unzip.
l When compiling, you have enough space, the bigger the better.
l Architecture_guide.html in the document link seems to be lost, you can see the same sex article from O'Reilly's
The Lay of the Land
Points of Interest in This Directory:
· License.txt, licensed_file_list.txt, and license_banner_for_sources.txt
Env.bat, env.sh, and env.csh
· Buildall and Buildall.cmd
To build the Shared Source CLI, you must be running within a sh- or csh-flavored shell on FreeBSD, or a command window in Windows. The build procedure is detailed in this document, but to summarize, you first set up your environment by running one of the flavors of the env script, followed by running buildall. Note that through some filename and file permissions trickery, typing "buildall" on Windows will cause buildall.cmd to run, while typing it into a FreeBSD shell will cause the shell script named buildall to be run The env scripts are not quite as automagic - on FreeBSD, depending on the shell that you favor, you will have to "source" either env.sh or env.csh;. on Windows, you may Just Type Env Into a Command Window.
But wait! Before you go and build the CLI, first you should take a look at the license! The file named license.txt contains the Microsoft Shared Source CLI / JScript / C # License, which applies to this entire distribution. The file named licensed_file_list .txt contains the "bill of materials" for the distribution, and the file named license_banner_for_sources.txt is the copyright banner that is injected into most of the files found in this distribution. There are a few files in this distribution that are licensed under other Licenses, and we have preserved the copyright and license notices for these.sscli / docs is documentation for the shared source CLI
This Document Resides in this Directory, AS Well AS A VERY USEFUL INDEX OF All of The Doc That Is Part of The Distribution.
Happy browsing!
SSCli / Pal Contains Implementations of the Platform Adaptation Layer (PAL)
Within the pal subdirectory, we find two subdirectories, unix and win32. The "unix" directory contains the implementation of the FreeBSD pal (do not ask why it is not named FreeBSD ...) and, logically enough, the "win32 "directory contains the Windows PAL. There is also an important header file, named rotor_pal.h, which declares all of the APIs that a developer building a new PAL would have to implement. See the PAL Specification for more details on this topic.
The Win32 PAL is primarily an exercise in calling through to the underlying Win32 API after logging the call and sanity-checking parameter values in some cases, but the code for doing portable exception handling might be of interest.
The FreeBSD PAL, on the other hand, is a substantial piece of work. Mapping Win32 semantics onto BSD semantics is non-trivial, and a number of interesting (and possibly controversial :) design decisions lie within this directory. From Unicode support to exception Handling to memory-mapped files to debugger support to sockets and file i / o
In order to make life simpler for developers who wish to build new PAL implementations, some of the more generic or reusable implementation details have been broken into a separate library, called the PAL runtime. If you're not implementing a PAL, this directory still Might Be Interesting - IT Contains a Number of Odds and Ends, Including:
· Implementation of the COM APIS USED IN ROTOR
· Crypto Code Used to Support Strongnames and The Runtime
· C runtime functions
· Math and Decimal Math Routines
· Support for streaming over memory
· String, URL, And Pathname Parsing and Manipulation
Configuration and Resource Loading
· Code Used When Calling from Platform-Native Code to Managed Code
The PAL runtime is used by the FreeBSD PAL Note the set of "cut down" windows header files in sscli / palrt / inc directory;. These are included in order to pull in these API helpers If you wish to implement a new PAL,. You Will Probably Want To Use The Same Technique.
SSCLI / Tools Is Source Code for Portable Build Tools
Once a PAL has been created, using the native tool chain for whatever platform is being built, a set of portable build tools are then built against the PAL This is the bootstrap that enables the bulk of the build process;. These tools use the PAL . APIs to accomplish their work Documentation for all of these tools can be found in the sscli / docs / buildtools directory; see in particular build.exe, binplace.exe, and nmake.exe.sscli / clr / src contains a lot, including The runtime and the c # compiler
Points of Interest Include these Sub-Directories:
· Vm -. This directory has the bulk of the execution engine, including the garbage collector, the class loader, the type system, error reporting, AppDomains, Assemblies, delegate support, reflection, security, and the code manager There are numerous interesting Files to Examine Here. (for Those Curious About The Build Process, Note That VM HAS A "DIRS" File, But The "Sources" File Can Be Found In The VM / WKS Subdirectory.)
· Csharp - this Directory Contains The Sources for the c # Compiler (csc.exe) and the assembly linker (al.exe).
· Utilcode - This directory contains core routines used throughout the runtime, the tools, and the C # compiler It includes code for path handling and parsing, array and hashtable management, C runtime routines, character case support, library and assembly loading, debugging. And Logging Instrument, Synchronization, AS Well AS Utility Code for Miscellaneous Tasks Such As Formatting, Guid Creation, Error Handling, And Registry and Config Access.
· MD - this Directory Contains a metadata reader and write.
Fjit - The Rotor Jit Compiler and Its Verifier Can Be Found Here.
· Fusion - Code that implements binding to assemblies, policy checking for the binding process, and the Global Assembly Cache can be found in the fusion directory · bcl -. C # code for the ECMA Base Class Libraries can be found in this directory. Most of the Interesting Code Is in System and ITS Sub-Directories.
· Debug - this Directory Contains The Source Code for the Managed Code Debugger (Cordbg.exe).
· ILASM - An Assembler for The Common Intermediate Langauge.
· ILDASM - a Very Useful Disassembler.
· Tools - This directory contains sources for the PEVerify utility, a managed code launch utility (clix.exe), a metadata dump utility (metainfo.exe), a reader / writer for managed debugger symbols, and numerous other utilities and tools.
· Dlls - This directory contains sub-directories for all of the native shared libraries that are linked as a part of the build process Anyone wishing to build tools against these shared libraries may find the information in these directories useful..
SSCLI / FX / SRC Contains Sub-Directories of C # Code That Implement Frameworks
Several Sub-Directories Contain IMPLEments of Major Namespaces, Such As Regular Expression Support, XML Support, And Networking. There is Also Some Code for Miscellaneous Features in these Directories.
SSCLI / Managedlibraries / Remoting Contains C # code for remote
Thase Frameworks Are Not Part of The Bcl, But Will Be Useful.
SSCLI / JScript / Engine Contains The Sources for A JScript Compiler
This JScript compiler is completely written in C #, so it is interesting both as an example of a large C # project and as an example of how to compile against the CLI intermediate language. The compiler uses the System.Reflection classes extensively in producing its managed executable output. JScript is also a very "dynamic" language, and as such, demonstrates many interesting compiler techniques for generating IL and runtime structures on the fly.sscli / build only exists after you have built the code
It contains a number of important things at this point, including the executables and shared libraries themselves, as well as your debugging symbols and the directory used as the Global Assembly Cache. (Note that some executables can be found in both the root directory, while Others are in sdk / bin.)
Each Target That You Build (Checked, Fast-Checked, or Free) Will Have ITS OWN Set of Build Subdirectories.
SSCLI / TESTS Contains Numerous Smoke Tests
The tests directory contains a large number of small tests that can be used, once you have built the sources, to avoid regressions while modifying the code. The file rrun.pl is a perl driver (with useful comments embedded within it) that can be Used to Run The Tests for the runtime itself, while the Palsuite Sub-Directory Contains Tests for the FreeBSD PAL Implementation.
(Above English article from Rotor's map.html, Microsoft copyright)