Home / Smart Contract Auditing / Core Solidity Status Update: Frontend Redesign, Community Feedback, and the Road Ahead

Core Solidity Status Update: Frontend Redesign, Community Feedback, and the Road Ahead

As the smart contract ecosystem continues to mature, developers and researchers are constantly seeking ways to write safer, more modular, and more expressive code without sacrificing the underlying reliability of the Ethereum Virtual Machine. Core Solidity, the ambitious new frontend initiative for the solc compiler ecosystem, is stepping up to address these needs. Reflecting on the state of the project at the beginning of October 2026, the Core Solidity development team has released a comprehensive status update detailing the language’s architectural evolution, recent syntax adjustments, community feedback from dozens of qualitative interviews, and the ongoing path toward production readiness.

Understanding Core Solidity: Architecture and Boundaries

To properly evaluate Core Solidity, it is vital to understand its core architectural design. Several industry observers and developers mistakenly assumed that Core Solidity represents a complete rewrite of the entire compiler stack. However, the project team has clarified that Core Solidity functions specifically as a new frontend for solc.

Under the hood, the backend remains unchanged. Core Solidity compiles down to Yul. From Yul onwards, the bytecode is produced by the exact same optimizer and code generator that solc already utilizes for Classic Solidity, the language familiar to developers today. The prototype compiler already operates successfully in this manner, emitting Yul and handing it directly to solc for final processing.

This new frontend introduces a radically enhanced type system to the language. It brings algebraic data types, pattern matching, generics, traits, and compile-time evaluation directly to smart contract development. Furthermore, it shifts much of the functionality currently built directly into the compiler into a robust standard library written in the language itself.

The initiative was first introduced in October 2025 via "The Road to Core Solidity," followed by design specifications in "Core Solidity Deep Dive" and detailed feature coverage in "Pattern Matching in Core Solidity." While the syntax has undergone significant changes since those initial posts—evolving to look much closer to Classic Solidity—the foundational concepts remain intact. Currently, Core Solidity remains a prototype not yet intended for mainnet deployment, and all implementation details remain subject to change.

Current State of the Language and Syntax Evolution

Over the summer, the development team reworked the syntax extensively to bridge the gap with Classic Solidity. Consequently, code samples published in earlier posts now use a provisional syntax and will no longer compile, even though the underlying concepts still apply.

The modern syntax introduces notable adjustments. Types now follow names in what is known as postfix syntax, seen in declarations like phase: Phase or amount: uint256. Additionally, beyond a small set of built-in types, nothing is in scope unless explicitly imported, which includes the standard library itself.

A prime example of this new paradigm is an escrow contract managed via an algebraic data type:

import * from std;
import * from std.dispatch;
import * from std.Generic;
import * from std.StorageGeneric;

enum Phase 
    AwaitingPayment,
    Funded(uint256),
    Released(uint256)


contract Escrow 
    phase: Phase;

    constructor() 
        phase = Phase.AwaitingPayment;
    

    function deposit(amount: uint256) public 
        match (phase) 
            case Phase.AwaitingPayment 
                phase = Phase.Funded(amount);
            
            default 
                revertWithError("already funded");
            
        
    

    function release() public returns (uint256) 
        match (phase) 
            case Phase.Funded(amount) 
                phase = Phase.Released(amount);
                return amount;
            
            default 
                revertWithError("nothing to release");
                return 0;
            
        
    

    function status() public returns (uint256) 
        match (phase) 
            case Phase.AwaitingPayment  return 0; 
            case Phase.Funded(_)  return 1; 
            case Phase.Released(_)  return 2; 
        
    

In this structure, an enum variant can carry data, which is the defining characteristic of algebraic data types. The std library provides basic types and functions like uint256 and revertWithError, while std.dispatch handles the underlying logic for public functions. Furthermore, std.Generic and std.StorageGeneric enable complex algebraic data types like Phase to reside in storage. Because the generated dispatch and storage code references names from these modules, wildcard imports are currently required.

The match control structure safely deconstructs the Phase enum. Crucially, any match statement that leaves a case unhandled without providing a default arm is automatically rejected by the compiler. While powerful, the current prototype still exhibits minor rough edges: custom errors are not yet supported, meaning reverts carry plain strings, and the release function requires an unreachable return statement following revertWithError to satisfy compiler checks—a known open issue.

The prototype compiler hosted in the solcore repository has successfully been tested on ports of existing, prominent contracts. The test suite compiles ports of the Ethereum deposit contract, WETH9, and a minimal ERC20 token through solc, executing them successfully on the EVM as part of continuous integration, though events are omitted as the prototype lacks event support.

For developers wishing to experiment, the online playground offers the fastest route. It allows users to compile contracts, invoke functions, inspect generated bytecode, and share links. Beyond basic examples, the playground features complex architectures, such as three vaults composed over a shared engine module and an ERC20-style token constructed entirely from feature modules. Because new language features land in the solcore repository before reaching the web playground, features like structs may appear in the repository ahead of the web interface. Concurrently, the team is formalizing the semantics of Core Solidity within the Lean 4 proof assistant through the solcore-lean repository.

What Is Still Missing and Deliberate Architectural Differences

Despite rapid progress, several features relied upon by production-grade contracts are still missing from the main branch of the solcore repository. The development team emphasizes that the absence of these features in the current prototype does not mean they are permanently excluded from Core Solidity. With pull requests opened and merged weekly, the feature set evolves rapidly.

Gas costs and code size have not been primary focal points for the prototype phase, and comparative benchmarks against Classic Solidity have not yet been conducted.

Most notably, Core Solidity introduces deliberate architectural divergences from Classic Solidity. The language completely omits inheritance, meaning there are no virtual keywords, no abstract contracts, and no Classic-style inheritance libraries. Instead, modularity and code reuse are achieved entirely through composition using traits and modules. The development team plans to publish a dedicated deep dive into composition without inheritance in the near future.

Documentation is another ongoing effort. While work-in-progress reference documentation is available for compiler and tool developers, detailing the syntax, type system, and module system, comprehensive chapters targeted specifically at smart contract developers are still being authored.

Community Insights and Qualitative Feedback

Since March 2026, the Core Solidity team has conducted 18 qualitative interviews, engaging with protocol developers, security researchers, auditors, educators, library and tool maintainers, wallet teams, and programming language researchers. These sessions frequently involved participants reading Core Solidity code in the playground for the first time and sharing their immediate impressions.

Algebraic data types and pattern matching received overwhelming praise from nearly everyone who reviewed them. Participants frequently highlighted the compiler’s safety feature of rejecting unhandled match cases. Furthermore, most guests found that unassisted Core Solidity contracts were easily readable and closely resembled traditional Solidity.

Regarding inheritance and composition, the reception was largely favorable among auditors and security researchers who noted that traditional inheritance often complicates code reviews. In Core Solidity, when contracts are composed from modules, a function from a module can only be invoked externally if explicitly wrapped in a public function. For example, a modular ownable implementation manages its own storage and exports internal helper functions, while a Token contract selectively exposes administrative capabilities by wrapping specific imported functions. Security professionals appreciated this explicit surface-area control.

However, a few development teams that rely heavily on specific inheritance patterns expressed a desire to see how complex real-world architectures map to composition before forming a definitive stance. Open questions remain regarding how a reusable module can effectively manage its own state without handling raw storage slots directly. Presently, modules in the extension and reentrancy examples read and write ERC-7201 namespaced storage slots directly, a pattern that currently lacks high-level language support or collision-prevention checks by the compiler.

Tooling maintainers anticipate relatively straightforward adaptations for static analysis tools, requiring primarily a new parser for syntax-tree-based tools, while bytecode-level tools remain unaffected. Adoption timelines are expected to mirror those of major compiler upgrades, with conservative projects waiting for proven track records, comprehensive tooling, and mature auditing support.

Two major architectural topics remain open for community debate. The first is ABI compatibility. Core Solidity is designed to utilize the same ABI as Classic Solidity, allowing Core Solidity contracts to call external Classic Solidity contracts. However, the reverse direction presents challenges because algebraic data types within external interfaces require custom encodings not currently defined in the standard ABI specification. While most interviewed guests considered this a lower priority, some emphasized the importance of maintaining full bidirectional composability.

The second open question concerns the scope of the standard library. Opinions range from maintaining a minimal baseline to building a comprehensive standard library, with proponents of a lean approach arguing that any bug in a pervasive library impacts the entire ecosystem.

When discussing current pain points in Classic Solidity, developers frequently cited the EVM contract size limit, stack-too-deep errors, and slow compilation times. While the contract size limit is an intrinsic EVM constraint, stack-too-deep errors and compilation latency are actively being targeted by the experimental SSA CFG code generator located in the shared backend. Additionally, many interviewees noted that the rise of AI-generated smart contracts places an even higher premium on readable, explicit code and precise compiler error reporting.

What Comes Next

The development team is actively scoping an initial installable release of the prototype compiler designed to gather early community feedback. While it remains a high priority, no specific release date has been established.

In the immediate future, the team will publish a deep dive into composition without inheritance and formalize the community contribution process for the standard library. Community members can continue exploring the online playground, tracking repository developments, or joining the open weekly team calls.

For live engagement, the team is scheduled to appear at the DeFi Security Summit with a presentation titled "What you need to know about Core Solidity," followed by a dedicated workshop titled "Your first Core Solidity smart contract" at Devcon. Researchers, auditors, educators, and developers interested in demonstrations or providing feedback are encouraged to reach out directly to the core development team as the qualitative interview series continues.

Tagged:

Leave a Reply

Your email address will not be published. Required fields are marked *