May 2007 Entries
One of the problems that we've run into when trying to get new platforms such as the Compact Frameworks or Silverlight to support Visual Basic is getting the VB runtime supported on the new platform. The VB runtime, besides having a bunch of user functions such as Left and MsgBox and such, contains a number of language helper functions that are required for the correct functioning of the language. For example, when you convert an Integer value into a String value, we emit a call to a helper that does the conversion for you, since there is no native IL...
As many people know by now, Microsoft has decided to reschedule the PDC that was planned for later this year. This was very disappointing for me personally, since I was looking forward to seeing a bunch of the people that I usually see there and was one of the consolations I had for myself for not being able to go to MIX. It also means that our plan to talk more about VBx at the PDC is going to have to be shifted around. Not clear where/when our focus is going to move to, but stay tuned, we should have...
As is always the case in a major release, there are a number of smaller features that don't get very publicized because they're not as big or sexy as the major features. One that someone asked me about privately in email was partial methods. VB will support them in pretty much the same way that C# does. In fact, rather than writing a big, long entry about it, you could just check out Scott Wisniewski's excellent entry on them. You can also check out Wes Dyer's excellent entry on them for C#.
How's that for lazy?
Updated 05/30/2007: Somehow I'd missed the...
Yes, it's true, as Miguel found out at the compiler lab: Another interesting detail: the new Javascript compiler is written in Visual Basic.NET. The compiler he's talking about is the Silverlight-based Javascript compiler that we released in Silverlight 1.1. Of course, we're also writing VBx in VB as well, so...
About a month ago, the C# team announced that they were making anonymous types immutable in C# 9.0. The issues with mutable anonymous types are pretty well described in Sree's blog entry, but what it boils down to is this: in several places in LINQ, anonymous types are used as keys for things like grouping and filtering. For example, if you group customers by state and country, then the grouping is done on a composite key made up of the State field and the Country field in an anonymous type. To enable keys to be used to do grouping efficiently,...
Many months ago, I discussed the fact that we were finally planning to come up with a true ternary conditional operator that would allow short-circuited conditional expressions. (Just as a quick recap: the current problem with the IIF function is that it evaluates all the arguments since it is just a regular method call. So "IIF(x Is Nothing, "Empty", x.Name)" will throw an exception if x is Nothing, because we still evaluate x.Name.) At the time, we were considering taking the IIF function and making it intrinsic. In the end, this looked like it would just be too big of...
Of course, some of the hardest parts of being a parent is giving up, giving in and admitting that you're no longer the freewheeling couple that you once were. Bit by bit, kids chip away at any pretensions you might have of remaining young and/or cool. Thankfully, in my case that isn't really giving up all that much--I mean, I was never really cool, so it's not that much of a loss for me. My wife, on the other hand, was quite a bit cooler than me, and so she's taking it a bit harder. Case in point--after much resistance, my...
One of the other announcements from MIX was "Project Jasper," which is (in the words of the guys who wrote it): [...] a set of components aimed at fulfilling the need for a rapid and iterative development experience for data. With Jasper, you are able to just point at a database and immediately begin coding against its data using intuitive, domain-specific data classes. No configuration and no source code generation are required. Jasper works with existing application frameworks (including ASP.NET, WinForms, and WPF) and existing, real-world databases. One of the ways that Jasper does it's "point and code" magic...
One. Just one. VBx is the next version of Visual Basic, not a new version of Visual Basic. Part of the confusion stems from the fact that there are TWO ways you can use Visual Basic in Silverlight, and one uses Orcas and one uses VBx. So let me see if I can clarify a little bit... As everyone should be aware now, Silverlight is a cross-platform version of the CLR. This means that Silverlight, with some limitations, can run any compiled IL application or library that the desktop CLR can run. This also means that (again, with some limitations) Visual...
There was a semi-announcement as a part of the Silverlight 1.1 discussion at MIX07 yesterday that people might be wondering about. If you check out the Silverlight poster that Brad posted a pointer to, you'll see that on the right hand side under the box that says Framework Languages, there are TWO listings for Visual Basic. First, there's "Visual Basic" and then down at the bottom there's a "VBx" with a little icon "Soon." Then, if you look at Jim Hugunin's blog entry on the Dynamic Language Runtime (DLR), you'll see that he says (emphasis mine): We're initially building four...