Sr. Content Developer at Microsoft, working remotely in PA, TechBash conference organizer, former Microsoft MVP, Husband, Dad and Geek.
152809 stories
·
33 followers

2025: The Year of the Return of the Ada Programming Language?

1 Share

In 2025, the Ada programming language made what might be considered a comeback. (But don’t call it one! Yet.)

Last March, Ada broke into the TIOBE Index top 20 (reaching number 18), and by July, Ada broke the top 10 (reaching number 9 – its highest-ever position on TIOBE). It is now back to number 18.

Moreover, this month Ada also broke into the top 10 in the PopularitY of Programming Language Index (PYPL), landing at number 9.

While programming languages such as Python, C/C++ and Java continue to rank amongst the most popular languages, the resurgence of interest in Ada could partially be explained by the push to use more memory-safe languages.

Indeed, in a world increasingly focused on software security and safety, Ada stands out, said Tony Aiello, product manager at AdaCore, which provides software development tools for mission-critical systems.

“Ada is the language with the longest and strongest pedigree: Ada was designed from the ground up for secure, safety-critical systems,” Aiello said. “Ada offers strong static typing and runtime memory safety, two language features in growing demand.”

Moreover, thanks to SPARK, which brings deductive formal verification to Ada, developers can prove static memory safety and the absence of runtime errors, guaranteeing the elimination of significant classes of serious security vulnerabilities before the software is even executed, Aiello told The New Stack. SPARK is a programming language based on Ada and intended for developing high-integrity software.

These capabilities make Ada especially popular in the aerospace, defense and automotive industries, which have been receiving considerable attention recently, he said.

Meanwhile, “Ada proves that a language capable of delivering concurrency and safety can remain viable for nearly five decades,” said Brad Shimmin, an analyst at The Futurum Group. “Currently, features such as strong typing and robust memory management are driving interest in languages like Rust and Go across the board, as developers can build software with less concern for both stability and security. With Ada, it’s easy to see that those techniques and capabilities, like runtime and compile-time checks, make it a great choice for large-scale projects that need to deliver performance and stability.”

According to an AdaCore blog post, Ada is a powerful language for developing safe, reliable, high-performance software. Its combination of strong typing, memory safety, efficient code generation, and precise low-level control makes it an ideal choice for high-integrity systems.

Also, “as an imperative, procedural language, Ada feels familiar to developers with experience in C, C++, or Rust,” the post said.

Updating FAA Systems

The U.S. Federal Aviation Administration (FAA) has used Ada extensively in its air traffic control (ATC) systems. In 1989, IBM, under contract with the FAA, began working with the agency to deliver the Advanced Automation System (AAS) program, an ambitious effort to modernize the entire ATC system. The AAS was slated to consist of 2 million lines of Ada code. The FAA’s interest in Ada coincided with the Department of Defense (DoD) mandating Ada for its systems.

The DoD mandated Ada as its standard language in 1987, but this mandate became law via the 1991 Defense Appropriations Act, which took effect June 1, 1991, and required Ada for weapons systems and other mission-critical systems. That mandate ended in 1997.

However, Ada continues to be used in critical systems within the aviation industry, including commercial aircraft like the Boeing 777, and in various ATC systems globally.

As the Trump Administration has vowed to overhaul the ATC, the question arises of what the FAA will do with all that Ada code? Are they looking at moving to Rust or a new language?

“Moving from Ada to Rust sounds like a pretty heavy lift,” Shimmin said. “Do you think, based on some of the early work we’ve seen from IBM in refactoring COBOL to Java, that we’ll be seeing more and more of these major migration/modernization efforts?” he asked.

Shimmin added that his guess is that the rise of “generative and agentic AI actually makes it less likely that companies will feel they need to ‘modernize’ code that already works and works well. I’m thinking that’s down to the fact that the biggest issue with maintenance is domain expertise and institutional knowledge, two areas where AI simply shines.”

Ada and AI?

Speaking of AI, AdaCore’s Aiello said Ada and especially SPARK are the best-suited languages for AI-assisted development.

“Both Ada and SPARK embed self-checking capabilities in the language, allowing LLMs [large language models] to reason more precisely as they develop the code and provide the user with code that is not only free of a number of common programming mistakes, but also functionally correct,” he said.

Other Factors Driving Ada’s Popularity

In addition to Ada’s memory safety and other features, some observers see other reasons for its recent spurt in popularity.

“The recent growth in languages’ popularity indices can also be explained by the modernization of the Ada/SPARK ecosystem, for example with the Alire package manager or the VS Code plugin,” said Fabien Chouteau, community and advocacy manager at AdaCore. Alire is also known as the Ada Library Repository.

Meanwhile, “We are also witnessing a virtuous cycle of new Ada/SPARK developers joining the community, driving new initiatives for collaboration, and therefore bringing new people to learn and contribute,” Chouteau said.

In addition, Nvidia’s interest in Ada could also play a part in its recent popularity.

“It’s likely that Ada’s ranking in the TIOBE index is influenced by Nvidia’s experimentation with Ada and SPARK, and may be confounded because they have products by those names as well,” said Andrew Cornwall, an analyst at Forrester Research.

Indeed, Nvidia offers its DGX Spark product and Nvidia Ada Lovelace Architecture.

Ada’s History

Ada was named after Ada Lovelace, who is considered to be the world’s first computer programmer.

According to Wikipedia, “Ada is a structured, statically typed, imperative and object-oriented high-level programming language, inspired by Pascal and other languages. It has built-in language support for design by contract (DbC), extremely strong typing, explicit concurrency, tasks, synchronous message passing, protected objects and nondeterminism. Ada improves code safety and maintainability by using the compiler to find errors in favor of runtime errors.”

The language was created by a team led by French computer scientist Jean Ichbiah of Honeywell under contract to the DoD from 1977 to 1983 to supersede over 450 programming languages then used by the DoD.

Moreover, Ada was originally designed for embedded and real-time systems. Then the Ada 95 revision, designed by S. Tucker Taft of Intermetrics between 1992 and 1995, improved support for systems, numerical, financial and object-oriented programming (OOP). Taft is currently a vice president and the director of language research at AdaCore.

A Language That Prevents Errors

Meanwhile, an article from Ada Germany last year by Chair Tobias Philipp, Deputy Chair Christina Unger, Dr. Hubert B. Keller and experts from Ada Deutschland e.V., said “programming languages like Ada can systematically prevent entire classes of errors through strong typing and extensive compile-time and runtime checks. In Ada, an array is not merely a pointer to the first element, but a semantic structure that inherently includes its index types and bounds. Read and write operations are verified by both the compiler and at runtime.”

In addition, the article argues that 12 of the Top 25 software weaknesses as defined by the Common Weakness Enumeration (CWE) “would be precluded by the use of Ada and its syntactic and semantic checking mechanisms at compile and runtime — prevented solely through the choice of programming language, regardless of coding mistakes.”

Other Ada Users

Displaying the varied uses of Ada today, AdaCore compiled a list of organizations that depend on the language every day.

These include the Victoria Line in London, which is touted as the world’s first fully automated underground railway. Its Automatic Train Operation (ATO) system uses Ada for the main control logic, while the emergency braking system was written in SPARK.

Also, BNP Paribas, one of the world’s leading banking and financial services institutions, uses Ada to enhance its ability to meet the demands for its risk calculation models. Ada empowers a robust and reliable risk calculation engine that can handle millions of daily requests with high accuracy, performance and reliability, AdaCore explained.

Deep Blue Capital uses Ada to implement trading algorithms that execute thousands of transactions per second. The company’s engineers chose Ada not just for its efficiency, but for its compile-time safety features, strong typing and memory safety guarantees, AdaCore reported.

Additionally, Stratégies Romans, a French software vendor, developed a comprehensive 3D computer-aided design (CAD) suite using Ada. Their software supports a range of design and modelling tasks and is used by engineers and designers in industrial settings. Ada’s use here demonstrates that Ada is equally suited to large-scale interactive systems, not just embedded controllers, AdaCore noted.

The post 2025: The Year of the Return of the Ada Programming Language? appeared first on The New Stack.

Read the whole story
alvinashcraft
7 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

New Safari developer tools provide insight into CSS Grid Lanes

1 Share

You might have heard recently that Safari Technology Preview 234 landed the final plan for supporting masonry-style layouts in CSS. It’s called Grid Lanes.

web browser showing a 6-column layout of photos of various aspect ratios, packed vertically
Try out all our demos of CSS Grid Lanes today in Safari Technology Preview.

CSS Grid Lanes adds a whole new capability to CSS Grid. It lets you line up content in either columns or rows — and not both.

This layout pattern allows content of various aspect ratios to pack together. No longer do you need to truncate content artificially to make it fit. Plus, the content that’s earlier in the HTML gets grouped together towards the start of the container. If new items get lazy loaded, they appear at the end without reshuffling what’s already on screen.

It can be tricky to understand the content flow pattern as you are learning Grid Lanes. The content is not flowing down the first column to the very bottom of the container, and then back up to the top of the second column. (If you want that pattern, use CSS Multicolumn or Flexbox.)

With Grid Lanes, the content flows perpendicular to the layout shape you created. When you define columns, the content flows back and forth across those columns, just like to how it would if rows existed. If you define rows, the content will flow up and down through the rows — in the column direction, as if columns were there.

diagram showing how for waterfall layout there are columns, while content flows side to side. And for brick, the content is laid out in rows, while it the order flows up and down.

Having a way to see the order of items can make it easier to understand this content flow. Introducing the CSS Grid Lanes Inspector in Safari. It’s just the regular Grid Inspector, now with more features.

Grid Lanes photo demo in Safari, with Web Inspector open to the Layout panel, and all the tools for the Grid Inspector turned on. Grid lines are marked with dotted lines. Columns are labeled with numbers and sizes. And each photo is marked with a label like Item 1 — which makes it clear the order of content in the layout.

Safari’s Grid Inspector already reveals the grid lines for Grid Lanes, and labels track sizes, line numbers, line names, and area names. Now it has a new feature — “Order Numbers”.

By turning on the order numbers in the example above, we can clearly see how Item 1, 2, 3, and 4 flow across the columns, as if there were a row. Then Item 5 is in the middle right, followed by Item 6 on the far right, and so on.

You might be tempted to believe the content order doesn’t matter. With pages like this photo gallery — most users will have no idea how the photos are ordered in the HTML. But for many users, the content order has a big impact on their experience. You should always consider what it’s like to tab through content — watching one item after another sequentially come into focus. Consider what it’s like to listen to the site through a screenreader while navigating by touch or keyboard. With Grid Lanes, you can adjust flow-tolerance to reduce the jumping around and put items where people expect.

To know which value for flow tolerance to choose, it really helps to quickly see the order of items. That makes it immediately clear how your CSS impacts the result.

Order Numbers in the Grid Inspector is an extension of a feature Safari’s Flexbox Inspector has had since Safari 16.0 — marking the order of Flex items. Seeing content order is also helpful when using the order property in Flexbox.

Web browser showing photo layout — this time a Flexbox layout. The Web Inspector is open to the Layout tab, and the Flexbox Inspector is enabled. The lines of the layout are marked with dotted lines... and each item is labeled with its order.

Order Numbers in Safari’s Grid Inspector works for CSS Grid and Subgrid, as well as Grid Lanes.

Try out Safari’s layout tooling

The Grid and Flexbox layout inspectors might seem similar across browsers, but the team behind Safari’s Web Inspector has taken the time to finely polish the details. In both the Grid and Flexbox Inspectors, you can simultaneously activate as many overlays as you want. No limits. And no janky scrolling due to performance struggles.

Safari’s Flexbox Inspector visually distinguishes between excess free space and Flex gaps, since knowing which is which can solve confusion. It shows the boundaries of items, revealing how they are distributed both on the main axis and the cross axis of Flexbox containers. And it lists all the Flexbox containers, making it easier to understand what’s happening overall.

Our Grid Inspector has a simple and clear interface, making it easy to understand the options. It also lists all Grid containers. And of course, you can change the default colors of the overlays, to best contrast with your site content.

And Safari’s Grid and Flexbox Inspectors are the only browser devtools that label content order. We hope seeing the order of content in Grid Lanes helps you understand it more thoroughly and enjoy using this powerful new layout mechanism.

Try out Order Numbers

Order Numbers in Safari’s Grid Inspector shipped today in Safari Technology Preview 235. Let us know what you think. There’s still time to polish the details to make the most helpful tool possible. You can ping Jen Simmons on Bluesky or Mastodon with links, comments and ideas.

For more

Note: Learn more about Web Inspector from the Web Inspector Reference documentation.
Read the whole story
alvinashcraft
7 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

The Real Healthcare Automation Problem Isn't Workflow. It's Fragmented Document Processing

1 Share
Hospitals don't have a workflow problem; they have a document processing problem. This problem is caused by templates, editing, generation, signing, and archiving being spread across disconnected systems. The right path to healthcare automation is embedding document processing directly into the EHR ecosystem. This eliminates extra service layers while improving consistency, compliance, and operational reliability.

Read the whole story
alvinashcraft
8 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

The GitHub problem (and other predictions) (Friends)

1 Share

Mat Ryer is back and he brought his impromptu musical abilities with him! We discuss Rob Pike vs thankful AI, Microsoft’s GitHub monopoly (and what it means for open source), and Tom Tunguz’ 12 predictions for 2026: agent-first design, the rise of vector databases, and are we about to pay more for AI than people?!

Join the discussion

Changelog++ members get a bonus 3 minutes at the end of this episode and zero ads. Join today!

Sponsors:

  • Namespace – Speed up your development and testing workflows using your existing tools. (Much) faster GitHub actions, Docker builds, and more. At an unbeatable price.
  • Notion – Notion is a place where any team can write, plan, organize, and rediscover the joy of play. It’s a workspace designed not just for making progress, but getting inspired. Notion is for everyone — whether you’re a Fortune 500 company or freelance designer, starting a new startup or a student juggling classes and clubs.
  • Squarespace – A website makes it real! Use code CHANGELOG to save 10% on your first website purchase.

Featuring:

Show Notes:

Something missing or broken? PRs welcome!





Download audio: https://op3.dev/e/https://cdn.changelog.com/uploads/friends/123/changelog--friends-123.mp3
Read the whole story
alvinashcraft
1 hour ago
reply
Pennsylvania, USA
Share this story
Delete

Runing tSQLt Tests with Claude

1 Share

Running tSQLt unit tests is great from Visual Studio but my development workflow isn’t just write tests, run tests, fix tests, run tests anymore, it is 2026 and I am a big fan of using claude code to help me write more efficiently than I used to be with just a keyboard and mouse.

I was using claude and asked it to write tests, there were some errors and so I had to paste the error over to claude, let claude diagnose and then I had to rerun the tests and my first reaction was to wonder why I am even involved in this process? It should be that I tell claude what to do, it writes the code and the tests and then runs the tests to check it all works, there is no reason for me to copy and paste anything.

The post Runing tSQLt Tests with Claude appeared first on SQLServerCentral.

Read the whole story
alvinashcraft
1 hour ago
reply
Pennsylvania, USA
Share this story
Delete

Symfony AI v0.2.0 Released: Feature Breakdown and Practical Guide

1 Share

If you still think PHP is limited to simple CRUD operations, you are officially out of the loop. The emergence of the Symfony AI component marks PHP's formal entry into the era of AI-native development.

Symfony AI v0.2.0 was officially released on January 10, 2026.

Version 0.2.0 is not just a simple version update; it brings features urgently needed for production environments, such as Failover, significant enhancements to the CLI tool Symfony Mate, and deep support for OpenRouter and VertexAI.

Below is a breakdown of the core updates in v0.2.0 and a practical guide to getting started.

v0.2.0 Core Updates at a Glance

This update focuses on the following key areas:

High Availability Enhancement: FailoverPlatform

In production environments, a single AI interface (like OpenAI) may experience fluctuations or downtime. The new version introduces FailoverPlatform, allowing the configuration of backup lines. When the primary interface is unresponsive, the system automatically switches to a backup platform (such as Azure or Anthropic), ensuring service continuity.

Mate Component Upgrades & Compatibility Expansion

The development assistant, Symfony Mate, has been significantly improved. CLI commands now include detailed descriptions to facilitate debugging. More importantly, v0.2.0 is backward compatible with Symfony 5.4 and 6.4, allowing teams maintaining older projects to also access AI capabilities.

Model and Platform Support Expansion

  • OpenRouter: Improved support for Streaming and Structured Output.
  • VertexAI: Added API Key authentication, simplifying the access process for Google Cloud.
  • Whisper: Supports verbose output mode, providing richer metadata for voice transcription.

Breaking Change

Special attention is required: The signature of the StoreInterface::add() method has changed. The variable-length arguments from the old version have been removed; you must now pass a VectorDocument object or an array. Relevant code must be modified synchronously during the upgrade.

Practical Guide: Building an Intelligent Q&A Service

The core design philosophy of Symfony AI is "Everything is Configurable". It abstracts complex AI logic through YAML files.

1. Install the Component

In your Symfony project (ensure your PHP environment is configured via ServBay):

composer require symfony/ai-bundle

2. Configure AI Services

Configuration in v0.2.0 is much more flexible. Below is a classic configuration example:

ai:
    # 1. Platform Definitions
    platform:
        primary_openai:
            openai:
                api_key: '%env(OPENAI_API_KEY)%'

        backup_azure:
            azure:
                gpt_deployment:
                    base_url: '%env(AZURE_BASE_URL)%'
                    deployment: 'gpt-4o-backup'
                    api_key: '%env(AZURE_KEY)%'
                    api_version: '2024-02-15-preview'

        # v0.2 New Feature: Failover Platform
        production_mix:
            failover:
                platforms: ['primary_openai', 'backup_azure']

    # 2. Agent Definitions
    agent:
        # Define a translation assistant
        translator_bot:
            platform: 'ai.platform.production_mix' # Use the failover platform defined above
            model: 'gpt-4o'
            prompt:
                text: 'You are a translation expert proficient in multiple languages. Please output the translation results directly without including extra explanations.'
                # If dynamic loading of prompts is needed: file: '%kernel.project_dir%/prompts/translator.txt'
            temperature: 0.3 # Control output randomness

3. Business Code Integration

Once configured, the AI Agent is automatically registered as a service. You can use it in a Service or Controller via dependency injection.

The following code demonstrates a service class that encapsulates the calling logic, receiving user input and returning the AI response.

<?php

namespace App\Service;

use Symfony\AI\Agent\AgentInterface;
use Symfony\AI\Platform\Message\Message;
use Symfony\AI\Platform\Message\MessageBag;
use Symfony\Component\DependencyInjection\Attribute\Autowire;

final readonly class TranslationService
{
    public function __construct(
        // Inject the translator_bot defined in the configuration file via alias
        #[Autowire(service: 'ai.agent.translator_bot')]
        private AgentInterface $translator
    ) {
    }

    public function translateText(string $sourceText): string
    {
        // Build message context
        $conversation = new MessageBag(
            Message::ofUser($sourceText)
        );

        // Execute call
        $result = $this->translator->call($conversation);

        // v0.2 supports retrieving metadata, such as Token usage (requires platform support)
        // $usage = $result->getMetadata()->get('token_usage');

        return $result->getContent();
    }
}

Advanced Feature: Multi-Agent Collaboration

This is currently the hottest pattern in the AI field. For complex business scenarios, a single Prompt is often insufficient. v0.2.0 optimizes the Multi-Agent orchestration configuration, allowing requests to be distributed to different specialized Agents based on user intent.

Configuration Example:

ai:
    multi_agent:
        support_team:
            # Orchestrator: Responsible for analyzing user intent
            orchestrator: 'ai.agent.manager'

            # Handoff Rules: Automatic routing based on keywords
            handoffs:
                # Hand over to technical Agent for code or error keywords
                ai.agent.tech_lead: ['php', 'exception', 'debug', 'code']
                # Hand over to finance Agent for invoice or refund keywords
                ai.agent.finance: ['invoice', 'refund', 'payment']

            # Default fallback Agent
            fallback: 'ai.agent.general_faq'

In your code, simply inject ai.multi_agent.support_team to use this intelligent distribution system without manually writing routing logic.

Common CLI Tools

The Mate toolkit in v0.2.0 provides convenient command-line debugging functions:

Direct Dialogue Test: Test Agent performance directly in the terminal without writing code.

php bin/console ai:agent:call translator_bot

Platform Connectivity Test: Verify if the API Key and network connection are normal.

php bin/console ai:platform:invoke openai gpt-4o "System check"

Installing Symfony & Environment Requirements

Symfony has specific requirements for the PHP environment, needing PHP 8.4 or higher.

This can be deployed in one click via ServBay. ServBay is a robust tool for web dev environment management. It supports one-click configuration of the PHP environment as well as backend services required for vector storage like Redis and PostgreSQL, effectively avoiding distractions caused by environment configuration issues.

Summary

Symfony AI v0.2.0 is a release that moves from experimental to mature. The addition of the failover mechanism provides the foundation for production environments, while compatibility support for older Symfony versions expands its scope of application. Combined with infrastructure quickly built using ServBay, PHP developers can implement AI features in existing projects at a lower cost.

Read the whole story
alvinashcraft
1 hour ago
reply
Pennsylvania, USA
Share this story
Delete
Next Page of Stories