Hello once again from Kraig, Kent, and Chris, your editors on the "Oslo" Developer Center. We're delighted to announce the release of the "Oslo" May 2009 CTP. The product team has been busy stomping on bugs and adding features for this release--there are plenty of changes to read about in the Release Notes. Meanwhile, the documentation team has been working hard with many new topics and tutorials in the MSDN Library.

And it's easy for us to pick the most prominent and exciting feature in this release, which is...we'll make you wait a little for that unless you're really clever and read the end of this Letter first. But hey, why don't you go ahead and start downloading and installing the CTP now? (Fair warning: it does take a few minutes to churn!)

Overall Changes

Now as soon as you start the installation of this May CTP, you'll see that a few new things are added in, and many things have been taken out. Most significantly, the installation package itself has been simplified to only contain the essential Oslo binaries: the "M" toolchain, a setup for the "Oslo" Repository, and...well, we still can't spoil the surprise now, can we? (But we guess you already saw it in the setup program....)

What you won't see installed with this CTP package are samples and documents and basically anything that's not a binary with the singular exception of the obligatory readme. All of the samples are available now as separate downloads, and did we mention the updated and very much expanded documentation is available in the Library? Do take some time to check out the Library TOC while you're waiting for the install to complete!

The key "M" Language Specification document continues to be available in the Library as well but the CTP package no longer provides Word format copies of this spec or the Library contents. We recognize this will be an inconvenience for some--but check out this MSDN Downloader tool we found on CodeProject that will download a whole tree from MSDN into a single HTML file. (And if you think this sort of coolness should be part of the MSDN Library, tell us! Your feedback will help make it a reality.)

You'll also find that some older samples have disappeared from the Downloads page as they're either obsolete or have been incorporated directly into the tools now. We're also in the process of updating many of the resources on this site (such as videos and a few samples) that will--for the sake of sanity among all the developers and writers!--take a little more time to refresh.

"M" Changes

Speaking of the "M" Language Specification, one of the most significant features in this CTP is that the "M" and MGrammar Languages have been merged into a single specification (the "M" Language spec). This new specification has also absorbed the SQL Mapping Specification, which, like the MGrammar Language Specification, also disappeared from the Library's Technical Articles section.

The command-line tools have merged as well: m.exe now handles both .m and .mg sources, and we bid a fond farewell to the mg.exe tool (mgx.exe still exists but uses .mx files). Now you no longer need to bounce between the two tools to build your solutions! How many keystrokes will you save? Of course, the command-line parameters are all supported by m.exe now, and you should still be able to use your old mg.exe command-lines, batch files, etc., with nothing more than dropping a single "g".

Some new language feature to be jazzed about:

  • The scope-resolution operator :: that explicitly scopes an identifier to a module.
  • The about() keyword that queries the catalog for data about "M" declarations
  • You can reference external functions using extern, for instance: extern PreDefinedFunction() : Integer32;
  • There's a new MGraph Object Model (also known as the AST API) for working with grammars dynamically. We have a big writeup for that on the way, so stay tuned.

Again, the Release Notes is your place for these details and many more.

There are also, as you probably expect, a number of additional breaking changes in this CTP as the Release Notes discuss. On biggie is the => binding operator. In "M", the equal sign '=' is used to bind entity fields to values. It is also used to bind default constant values for extents. M is a functional language, and assignment (=) gave the wrong intuition about the language. We've thus changed the symbol to the binding operator '=>'. The '=' operator is still accepted, but you will get a deprecation warning for now.

For example:

People { 

John { Name = "John", Age = 25, Friends { Mary, Jane} },

Mary { Name = "Mary", Age = 22, Friends { John} }

Jane { Name = "Jane", Age = 39, Friends { John} }

}

becomes

People { 

John { Name => "John", Age => 25, Friends { Mary, Jane} },

Mary { Name => "Mary", Age => 22, Friends { John} }

Jane { Name => "Jane", Age => 39, Friends { John} }

}

It's also worth noting that there are some changes to mx.exe as well. One is that the /t:Repository switch for mx.exe is now deprecated, though still supported. The new switch is /t:TSql10 moving forward.

"Intellipad" Changes

The Release Notes, say plenty about "Intellipad" too. One thing you'll immediately notice, we imagine, is that "Intellipad" has gotten faster in this CTP. Woohoo! The product team has been putting a lot of effort into improving the startup time and general performance while working in the tool. OK, so this means that you won't have a few extra minutes to goof off every day and call it "work"...sorry about that, but we didn't think you'd mind too much.

Something else you'll enjoy: the ability to pop up the member completion IntelliSense using Ctrl-Space, just as in Visual Studio. You knew it was coming! There has also been some overhaul of the different modes (for which there is now also a reference in the docs). What's been commonly known as "three-pane mode" is now called "DSL Grammar Mode" where you can, as before, type some representation of your language in the input pane, your grammar in the grammar pane, and see whether parsing happened correctly in the output pane. It's really one of the quickest and easiest ways to develop a grammar in short order without needing a Ph.D. in compilers!

A change in the UI also affects what's been known as three-pane mode for working with grammars. How you used to do this we've already forgotten. What you do now is open a grammar file (.mg), then select "Split New Input and Output Views" from the DSL menu. You can read more about this in the wholly new area of the Library for "Intellipad".

You'll also probably want to go out tonight, grab a drink, and celebrate the disappearance of the separate "samples enabled" mode for "Intellipad"...most of those features are now built into "Intellipad" directly. (The one that isn't, Mr. Epl, will soon be provided as a separate download on the "Oslo" Developer Center).

Repository Changes & Domains

You can now create (and delete) repositories and folders using the mx.exe tool. Playing with folders is an important means for applying security, as shown in these two videos: Part 1 | Part 2 (that are slated for refresh, mind you; some of the UI details in the tools are outdated, but the concepts are still valid). More videos are in the works too--watch for them on the DevCenter.

This CTP also comes with repository domains for the Common Language Runtime (CLR), Identity, and for the Unified Modeling Language (UML). What do these mean, you ask? Well, we'll leave that up to the MSDN Library that--did we tell you?--has been very much updated and expanded. (Nevertheless, if you run into any topic in the Library where your mind is saying "Cool stuff, but what the blazes do I do with this?" we want to know! Just post a message on the Oslo Forum or file a bug on the Connect site.)

Oh, and note again the change in mx.exe from /t:Repository to /t:TSql10 as mentioned earlier.

"Other" Changes, a.k.a. Quad...(oh, just wait another moment)

Well, with all these epic changes, maybe it's a bit of an anticlimax to announce that our CTP now includes--as we're sure you've guessed by now--Quadrant! That's right, the star of the old Introduction to Quadrant video (which has quietly disappeared for the moment) has come out and is ready to play. Well, that's not quite true: it's more like a reincarnation. That is, for those of you who got a first look at Quadrant from PDC 2008 or watched the old video, you'll notice that Quadrant has gone through significant changes to simplify its UI, hone its purpose, and be ready in a state for you to start playing with it.

You can read all about Quadrant in the MSDN Library, as you would expect from that very much expanded and updated documentation.

The product team is especially eager to hear your feedback through the Oslo Forum (for questions and comments) and the Connect site (for bugs). Do note that the Release Notes list a number of known issues with Quadrant, so do check there first if you encounter something odd.

And there is yet more, of course, but by now your install should be complete so you can start playing with the bits!

Enjoy--
Kraig (Brockschmidt), Kent (Sharkey), and Chris (Sells) for the big happy the "Oslo" family