Virgil B-03

Virgil is an new, light-weight object-oriented programming language.

  Add it to your Download Basket!

 Add it to your Watch List!


Rate it!
send us
an update
BSD License 
Ben L. Titzer
ROOT \ Programming \ Code Generators
3 Virgil Screenshots:
Virgil projetc is an new, object-oriented, light-weight programming language that is designed for building software for resource-constrained embedded systems at the lowest level. Microcontroller programmers can now develop complete software systems, including hardware drivers and OS services, in one language, without the need to resort to unsafe libraries or native code.

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":

Object-oriented Features
Classes and single-inheritance
Virtual methods
Orphan classes
Always pass by reference

Procedural Features

Functional Features
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).

Last updated on May 15th, 2007

#programming language #object-oriented language #embedded hardware #Virgil #object-oriented #programming #language

Add your review!