Today, we're very excited to officially announce the release of LabVIEW 2009! If you visit the whats new website, you'll see the full list of new features, but I wanted to use this opportunity to point out some of the improvements in this version that I think the large application community will find especially interesting. I'll be very eager to hear what you think and to get your opinion on these features.
Subversion Compatibility Improvements - If you're a TortoiseSVN user, like myself, you'll really appreciate this new .ini key. Put 'skipSVNFolders=true' into your LabVIEW.ini file to filter .svn and _svnfolders from autopopulating folders, find/replace operations and mass-compilation. This has already made my life a lot easier in just the few short months that I've had it enabled. If you use Tortoise, put this key in your .ini file now!
Command-Line Differencing- We've exposed the graphical differencing capabilities of LabVIEW to allow you to use them from the source code control tool of your preference. This is also a feature that I've really grown to appreciate when using TortoiseSVN - when I want to find out why a file is marked as having changed, I can now 'diff' it from Tortoise and LabVIEW highlights all my changes between versions. I wrote a white paper that explains this is greater detail, which can be found here.
App Builder Log File Generation - Generate documentation of the version of your VI that is being used in a built application. This feature was driven entirely by feedback we heard from large applicaiton developers who needed to prove that the validated code was actually going into the application they were deploying. All build specifications in LabVIEW 2009 now have a new check box in the Advanced category to 'Generate build log file.' This file will contain the timestamp and VI revision number for all VIs in the build.
Data Value References - Eliminate data copies and reduce memory utilization by creating references to large datasets in LabVIEW. Any datatype in LabVIEW can have a reference created to it, which basically acts like a pointer. For those of you who want to use a classes by-reference implementation, you can do so using this feature. See more.
SSL for Web Services - This is now the most secure method of communication in LabVIEW. You can use the default LabVIEW certificate, or create your own to secure communication with clients. Visit the Tools >> Options >> Web Services Security dialog to turn on this feature and setup a secure web server.
Create Friend Classes - Friend classes have access to private methods and properties of other classes, even if they are not a child of the class.
Unit Test Framework - We've improved the support for classes and made it possible to define inputs for your setup VI from the test case dialog.
Desktop Execution Trace Toolkit - Your trace will now include errors from VIs that have error handling. This is valuable for quickly identifying where and when the error is occurring.
Code Complexity Metrics - VI Analyzer has several new tests that will help you understand the complexity of your code, including cyclomatic complexity. This is valuable for gaining insight into how much software testing will be required. Learn more.
Parallel For Loop - Forget splitting your data and creating several new loops! Now you can make a single for loop inherently parallel by right clicking on it and selecting 'configure iteration parallelism.' It's a mouthful, but this powerful features makes it possible for LabVIEW to scale your algorithm across however many cores are available in your system programmatically. Learn more.
Recursion - See 'Recursion.' Seriously though, you can now recursively call a re-entrant VI in LabVIEW. For those of you who are at NI Week, check out the Sudoku solver that uses a recursive algorithm on a Real-Time target to solve puzzles from a camera in seconds! Learn more.
I've been bursting at the seams for a while in anticipation of this release. Again, these are just a few of many features you'll find in LabVIEW 2009, so check them out and share your thoughts!