Axum (programming language)

Last updated
Axum
Axum Banner.png
Developer Microsoft
First appearedMay 8, 2009
Stable release
Community Technology Preview / May 8, 2009 (2009-05-08)
Platform x86, x86-64 and Itanium
OS Windows XP
Windows Server 2003
Windows Vista
Windows Server 2008
Windows 7
License Closed source
Website Axum at DevLabs

Axum (previously codenamed Maestro) is a domain-specific concurrent programming language, based on the Actor model, that was under active development by Microsoft [1] between 2009 and 2011. [2] It is an object-oriented language based on the .NET Common Language Runtime using a C-like syntax which, being a domain-specific language, is intended for development of portions of a software application that is well-suited to concurrency. But it contains enough general-purpose constructs that one need not switch to a general-purpose programming language (like C#) for the sequential parts of the concurrent components. [1]

The main idiom of programming in Axum is an Agent (or an Actor), which is an isolated entity that executes in parallel with other Agents. [3] In Axum parlance, this is referred to as the agents executing in separate isolation domains; [3] objects instantiated within a domain cannot be directly accessed from another. [4] Agents are loosely coupled (i.e., the number of dependencies between agents is minimal) and do not share resources like memory (unlike the shared memory model of C# and similar languages); instead a message passing model is used. [3] To co-ordinate agents or having an agent request the resources of another, an explicit message must be sent to the agent. Axum provides Channels to facilitate this.

Channels can be regarded as a directional pathway to communicate between agent instances. The member functions of a Channel object, after it has been bound to an agent instance, can be used to communicate with it. A Channel contains input and output ports, which are queues which are used to send data to an agent or receive data from one. To co-ordinate the communication between agents, Axum allows each channel to have a user-defined protocol for communication. The protocol is defined as a state machine. [5] The data sent over a channel can be optionally restricted to conform to a certain pre-defined schema. The compiler and runtime will enforce the conformance with the schema. [6] Under the hood, a schema is translated into a serializable .NET class that contains only properties and side effect-free methods. [7]

The Axum project reached the state of a prototype with working Microsoft Visual Studio integration. [8] Microsoft had made a CTP of Axum available to the public, [9] but this has since been removed. Although Microsoft decided not to turn Axum into a project, [2] some of the ideas behind Axum are used in TPL Dataflow in .Net 4.5.

Related Research Articles

Active Directory (AD) is a directory service developed by Microsoft for Windows domain networks. Windows Server operating systems include it as a set of processes and services. Originally, only centralized domain management used Active Directory. However, it ultimately became an umbrella title for various directory-based identity-related services.

VBScript is a deprecated programming language for scripting on Microsoft Windows using Component Object Model (COM) based on classic Visual Basic and Active Scripting.

Visual Basic for Applications (VBA) is an implementation of Microsoft's event-driven programming language Visual Basic 6.0 built into most desktop Microsoft Office applications. Although based on pre-.NET Visual Basic, which is no longer supported or updated by Microsoft, the VBA implementation in Office continues to be updated to support new Office features. VBA is used for professional and end-user development due to its perceived ease-of-use, Office's vast installed userbase, and extensive legacy in business.

<span class="mw-page-title-main">Visual Basic (.NET)</span> Object-oriented computer programming language

Visual Basic (VB), originally called Visual Basic .NET (VB.NET), is a multi-paradigm, object-oriented programming language, implemented on .NET, Mono, and the .NET Framework. Microsoft launched VB.NET in 2002 as the successor to its original Visual Basic language, the last version of which was Visual Basic 6.0. Although the ".NET" portion of the name was dropped in 2005, this article uses "Visual Basic [.NET]" to refer to all Visual Basic languages released since 2002, in order to distinguish between them and the classic Visual Basic. Along with C# and F#, it is one of the three main languages targeting the .NET ecosystem. Microsoft updated its VB language strategy on 6 February 2023, stating that VB is a stable language now and Microsoft will keep maintaining it.

JScript is Microsoft's legacy dialect of the ECMAScript standard that is used in Microsoft's Internet Explorer web browser.

WinFS was the code name for a canceled data storage and management system project based on relational databases, developed by Microsoft and first demonstrated in 2003. It was intended as an advanced storage subsystem for the Microsoft Windows operating system, designed for persistence and management of structured, semi-structured and unstructured data.

Extensible Application Markup Language is a declarative XML-based language developed by Microsoft for initializing structured values and objects. It is available under Microsoft's Open Specification Promise.

Windows Presentation Foundation (WPF) is a free and open-source user interface framework for Windows-based desktop applications. WPF applications are based in .NET, and are primarily developed using C# and XAML.

Microsoft BizTalk Server is an inter-organizational middleware system (IOMS) that automates business processes through the use of adapters which are tailored to communicate with different software systems used in an enterprise. Created by Microsoft, it provides enterprise application integration, business process automation, business-to-business communication, message broker and business activity monitoring.

.NET Remoting is a Microsoft application programming interface (API) for interprocess communication released in 2002 with the 1.0 version of .NET Framework. It is one in a series of Microsoft technologies that began in 1990 with the first version of Object Linking and Embedding (OLE) for 16-bit Windows. Intermediate steps in the development of these technologies were Component Object Model (COM) released in 1993 and updated in 1995 as COM-95, Distributed Component Object Model (DCOM), released in 1997, and COM+ with its Microsoft Transaction Server (MTS), released in 2000. It is now superseded by Windows Communication Foundation (WCF), which is part of the .NET Framework 3.0.

Microsoft XML Core Services (MSXML) are set of services that allow applications written in JScript, VBScript, and Microsoft development tools to build Windows-native XML-based applications. It supports XML 1.0, DOM, SAX, an XSLT 1.0 processor, XML schema support including XSD and XDR, as well as other XML-related technologies.

Concurrency and Coordination Runtime (CCR) is an asynchronous programming library based on .NET Framework from Microsoft distributed with Microsoft Robotics Developer Studio (MRDS). Even though it comes with MRDS, it is not limited to modelling robotic behavior but can be used to express asynchronous behavior in any application.

Entity Framework (EF) is an open source object–relational mapping (ORM) framework for ADO.NET. It was originally shipped as an integral part of .NET Framework, however starting with Entity Framework version 6.0 it has been delivered separately from the .NET Framework.

<span class="mw-page-title-main">Parallel Extensions</span>

Parallel Extensions was the development name for a managed concurrency library developed by a collaboration between Microsoft Research and the CLR team at Microsoft. The library was released in version 4.0 of the .NET Framework. It is composed of two parts: Parallel LINQ (PLINQ) and Task Parallel Library (TPL). It also consists of a set of coordination data structures (CDS) – sets of data structures used to synchronize and co-ordinate the execution of concurrent tasks.

<span class="mw-page-title-main">Visual Studio</span> Code editor and IDE

Visual Studio is an integrated development environment (IDE) developed by Microsoft. It is used to develop computer programs including websites, web apps, web services and mobile apps. Visual Studio uses Microsoft software development platforms including Windows API, Windows Forms, Windows Presentation Foundation (WPF), Windows Store and Microsoft Silverlight. It can produce both native code and managed code.

Component Object Model (COM) is a binary-interface technology for software components from Microsoft that enables using objects in a language-neutral way between different programming languages, programming contexts, processes and machines.

<span class="mw-page-title-main">.NET Framework</span> Software platform developed by Microsoft

The .NET Framework is a proprietary software framework developed by Microsoft that runs primarily on Microsoft Windows. It was the predominant implementation of the Common Language Infrastructure (CLI) until being superseded by the cross-platform .NET project. It includes a large class library called Framework Class Library (FCL) and provides language interoperability across several programming languages. Programs written for .NET Framework execute in a software environment named the Common Language Runtime (CLR). The CLR is an application virtual machine that provides services such as security, memory management, and exception handling. As such, computer code written using .NET Framework is called "managed code". FCL and CLR together constitute the .NET Framework.

<span class="mw-page-title-main">.NET Framework version history</span>

Microsoft started development on the .NET Framework in the late 1990s originally under the name of Next Generation Windows Services (NGWS). By late 2001 the first beta versions of .NET Framework 1.0 were released. The first version of .NET Framework was released on 13 February 2002, bringing managed code to Windows NT 4.0, 98, 2000, ME and XP.

Windows Runtime (WinRT) is a platform-agnostic component and application architecture first introduced in Windows 8 and Windows Server 2012 in 2012. It is implemented in C++ and officially supports development in C++, Rust/WinRT, Python/WinRT, JavaScript-TypeScript, and the managed code languages C# and Visual Basic (.NET) (VB.NET).

References

  1. 1 2 "Maestro: A Managed Domain Specific Language For Concurrent Programming". Channel 9. Archived from the original on 7 April 2009. Retrieved 2009-04-16.
  2. 1 2 "The State of Axum". Niklas Gustafsson. Retrieved 2011-02-28.
  3. 1 2 3 Philips Joshua. "We haven't forgotten about other models – honest!". MSDN blogs. Archived from the original on 8 May 2009. Retrieved 2009-04-16.
  4. Niklas Gustafsson. "Isolation in Maestro". MSDN blogs. Archived from the original on 8 May 2009. Retrieved 2009-04-16.
  5. Niklas Gustafsson. "Channels". MSDN blogs. Archived from the original on 26 April 2009. Retrieved 2009-04-16.
  6. Joshua Philips. "Axum". Lang.NET Presentation. Archived from the original on 21 April 2009. Retrieved 2009-04-20.{{cite web}}: CS1 maint: unfit URL (link)
  7. Niklas Gustafsson. "Objects in Axum". MSDN Blogs. Archived from the original on 26 April 2009. Retrieved 2009-04-20.
  8. "Axum: Another piece of Microsoft's parallel programming puzzle". CNet blogs. Archived from the original on 17 April 2009. Retrieved 2009-04-16.
  9. "Axum". MSDN DevLabs. Archived from the original on 11 May 2009. Retrieved 2009-05-09.