Virgil: A new, lightweight object-oriented programming language.
One of the standout features of Virgil is its whole-program compiler system, which employs novel global optimization techniques to generate efficient machine code that runs directly on the hardware. Unlike other programming languages that require a virtual machine or language runtime system, Virgil's machine code runs smoothly without any intermediaries.
Although microcontrollers may not be as widely recognized as traditional desktop computers, they are everywhere around us. Nearly six billion microcontroller units were manufactured in 2005 and outnumber people on this planet by more than 5 to 1. Many electronic devices that we use daily now have a software-programmable embedded computer, and microcontrollers offer a cost-effective solution for many of these products.
Software for embedded systems differs significantly from traditional desktop and server computers. Embedded programs must control devices that interact with the physical world and often operate in real-time scenarios where software is tasked with controlling physical processes and actuators that can pose a physical threat. Finally, software updates for billions of devices can be incredibly costly, emphasizing the importance of software verification.
Virgil's unique approach to language technology includes a few key features such as classes, single-inheritance, and virtual methods for its object-oriented features. For procedural features, there are loops, switches, and statements. Lastly, functional features include delegates and aggressive inlining.
Virgil's known capabilities are impressive, but perhaps what's even more exciting is that the project is constantly evolving. The latest release has addressed many compiler bugs, improved space optimizations and command-line help, and added parametric types (generics).
In conclusion, I believe that Virgil's modern technology has demonstrated that it can produce more tangible gains in both software quality and efficiency. The language's stability and flexibility offer opportunities for further exploration and development for software engineers looking to create software for resource-constrained embedded systems. It's also a great tool to familiarize oneself with as we continue on this trajectory towards a more automated world.
Version B-03: N/A