Virgil is an new, light-weight object-oriented programming language.
Virgil also provides a whole-program compiler system that applies novel global optimization techniques to produce efficient machine code that runs directly on the hardware, without the need of a virtual machine or a language runtime system.
Why are microcontrollers important?
Embedded computers are everywhere. While the desktop computer revolution has brought computing to millions of users worldwide, the embedded system revolution has been quietly automating the world we live in--everything from the cars we drive to the roadways we drive them on; from factory production to the goods we use every day. In 2005, nearly 6 billion microcontroller units were manufactured. Today, microcontrollers outnumber people on this planet by more than 5 to 1. Soon, most electronic devices will have a software-programmable embedded computer with capabilities ranging from simple arithmetic to wireless communication, and microcontrollers offer a compelling solution for many of these products.
How is software for embedded systems different?
Software in this environment has very different requirements than traditional desktop and server computers. First, embedded programs must control devices that sense and interact with the physical world, in contrast to desktop and server software that is driven by databases, websites, and input from users. Second, embedded systems often operate in safety critical real-time scenarios, where software is tasked with controlling physical processes and actuators that can pose physical danger to people, infrastructure, and the environment. Third, the cost of software update for billions of devices makes it largely infeasible, vastly increasing the importance of software verification.
How can new language technology help?
Advances in programming languages over the past 30 years have yielded demonstrable productivity gains, including better static checking, more expressiveness, and better portability and maintability. Yet these advances have not been put into practical use in developing embedded systems software. The continued use of unsafe, low-level languages that frustrate automated program reasoning and verification poses a significant stumbling block to progress. While no magic bullet exists for software development, we believe that applying modern technology to this problem will produce real, tangible gains in both software quality and efficiency.
Here are some key features of "Virgil":
· Classes and single-inheritance
· Virtual methods
· Orphan classes
· Always pass by reference
· Aggressive inlining *
· Tail call optimization *
· Bit-level types
· Compile-time Application Initialization
· Hardware register access
· Interrupt handlers
· Well-defined language semantics
· Heap optimization
· Exceptions *
* = the implementation of this feature is not yet complete in prototype compiler
· Java 1.5 or later
What's New in This Release:
· This release fixes many compiler bugs, ensures more uniform semantics on AVR, improves space optimizations, improves command line help, radically simplifies and improves the compiler interface, adds access to the built-in interpreter from the command line, and adds preliminary support for parametric types (generics).