Convert Figma logo to code with AI

swiftlang logoswift-evolution

This maintains proposals for changes and user-visible enhancements to the Swift Programming Language.

15,311
2,412
15,311
53

Top Related Projects

67,285

The Swift Programming Language

The Package Manager for the Swift Programming Language

A set of Swift libraries for parsing, inspecting, generating, and transforming Swift source code.

Straightforward, type-safe argument parsing for Swift

Event-driven network application framework for high performance protocol servers & clients, non-blocking.

96,644

Empowering everyone to build reliable and efficient software.

Quick Overview

The swift-evolution repository is the home of the Swift programming language's evolution process. It contains proposals, discussions, and decisions related to the ongoing development and improvement of the Swift language. The repository serves as a platform for the Swift community to collaborate on the future of the language.

Pros

  • Community-Driven Development: The swift-evolution process allows the Swift community to actively participate in shaping the language's direction, ensuring that it evolves to meet the needs of developers.
  • Transparency: The repository provides a transparent and open platform for discussing and documenting the evolution of the Swift language, fostering collaboration and accountability.
  • Iterative Improvement: The iterative nature of the swift-evolution process allows for gradual and well-considered changes to the language, ensuring a stable and coherent evolution.
  • Language Stability: The careful review and approval process for language changes helps maintain the stability and consistency of the Swift programming language.

Cons

  • Complexity of the Process: The swift-evolution process can be complex, with multiple stages and requirements for proposals, which may be a barrier for some community members.
  • Potential for Slow Progress: The thorough review and approval process can sometimes lead to a slower pace of language evolution, which may frustrate developers who want to see faster changes.
  • Potential for Disagreements: As with any community-driven process, there may be disagreements and debates around the direction of the language, which can slow down the decision-making process.
  • Limited Influence for Individual Developers: While the process is open to the community, individual developers may feel that their voice is not as impactful as they would like it to be.

Getting Started

To get started with the swift-evolution repository, you can follow these steps:

  1. Visit the swift-evolution repository on GitHub.
  2. Browse the existing proposals and discussions to familiarize yourself with the ongoing evolution of the Swift language.
  3. If you have an idea for a language change or improvement, review the proposal process to understand the requirements and guidelines for submitting a new proposal.
  4. Once you have a proposal in mind, create a new issue or pull request in the repository, following the provided templates and guidelines.
  5. Participate in the discussion and review process, providing feedback and engaging with the community to help shape the future of Swift.

Competitor Comparisons

67,285

The Swift Programming Language

Pros of swift

  • Contains the actual Swift compiler and standard library implementation
  • Allows direct contributions to the Swift language codebase
  • Provides a comprehensive test suite for Swift language features

Cons of swift

  • Larger and more complex codebase, potentially harder for newcomers to navigate
  • Requires more technical expertise to contribute effectively
  • Changes need to go through a more rigorous review process

Code comparison

swift:

public struct String {
    @usableFromInline
    internal var _guts: _StringGuts

    public init() {
        self._guts = _StringGuts()
    }
}

swift-evolution:

# String Improvements

* Proposal: [SE-0163](0163-string-revision-1.md)
* Authors: [Ben Cohen](https://github.com/airspeedswift), [Dave Abrahams](https://github.com/dabrahams)
* Review Manager: [John McCall](https://github.com/rjmccall)
* Status: **Implemented (Swift 4.0)**
* Implementation: [apple/swift#8719](https://github.com/apple/swift/pull/8719)

The swift repository contains the actual implementation of the String struct, while swift-evolution contains proposals and discussions about language improvements, such as the String revision proposal shown above.

The Package Manager for the Swift Programming Language

Pros of swift-package-manager

  • Focused on package management and dependency resolution
  • Provides practical tools for Swift developers to manage projects
  • Actively maintained with frequent updates and bug fixes

Cons of swift-package-manager

  • Narrower scope compared to the broader language evolution discussions
  • Less community involvement in decision-making processes
  • More technical and implementation-focused, potentially less accessible to non-developers

Code comparison

swift-package-manager:

import PackageDescription

let package = Package(
    name: "MyPackage",
    dependencies: [
        .package(url: "https://github.com/example/example-package.git", from: "1.0.0"),
    ]
)

swift-evolution:

struct SE0001_AllowTrailingClosures: SwiftEvolutionProposal {
    static let id = 1
    static let status = .implemented(version: "3.0")
    static let title = "Allow (most) keywords as argument labels"
}

The swift-package-manager code demonstrates package configuration, while swift-evolution showcases proposal metadata structures.

A set of Swift libraries for parsing, inspecting, generating, and transforming Swift source code.

Pros of swift-syntax

  • Focuses specifically on Swift syntax parsing and manipulation
  • Provides a more targeted and specialized toolset for syntax-related tasks
  • Offers a comprehensive API for working with Swift source code programmatically

Cons of swift-syntax

  • Narrower scope compared to swift-evolution's broader focus on language evolution
  • May require more technical expertise to utilize effectively
  • Less community involvement in discussions and proposals

Code Comparison

swift-syntax:

import SwiftSyntax

let sourceFile = try SyntaxParser.parse(source: "let x = 5")
let variable = sourceFile.statements.first?.item.as(VariableDeclSyntax.self)
print(variable?.bindings.first?.pattern)

swift-evolution:

// No direct code comparison available as swift-evolution
// is primarily focused on language proposals and discussions
// rather than providing a code-level API

Summary

Swift-syntax is a specialized tool for working with Swift syntax, offering powerful APIs for parsing and manipulating Swift code. Swift-evolution, on the other hand, serves as a platform for discussing and proposing changes to the Swift language itself. While swift-syntax provides more direct code-level functionality, swift-evolution offers a broader perspective on the language's development and future direction.

Straightforward, type-safe argument parsing for Swift

Pros of swift-argument-parser

  • Focused on command-line argument parsing, providing a more specialized and user-friendly solution
  • Offers a declarative approach to defining command-line interfaces, simplifying implementation
  • Includes built-in support for generating help text and error messages

Cons of swift-argument-parser

  • Limited scope compared to swift-evolution, which covers broader language changes
  • May require additional dependencies for more complex command-line applications
  • Less community involvement in the development process

Code Comparison

swift-argument-parser:

struct Example: ParsableCommand {
    @Argument(help: "The name to greet")
    var name: String

    func run() throws {
        print("Hello, \(name)!")
    }
}

swift-evolution:

struct Example {
    let name: String
    
    init(name: String) {
        self.name = name
    }
    
    func greet() {
        print("Hello, \(name)!")
    }
}

The swift-argument-parser example demonstrates its declarative approach to defining command-line interfaces, while the swift-evolution example shows a more traditional Swift structure without specific command-line parsing features.

Event-driven network application framework for high performance protocol servers & clients, non-blocking.

Pros of swift-nio

  • Focused on high-performance networking and I/O operations
  • Provides a robust foundation for building server-side Swift applications
  • Actively maintained and regularly updated by Apple

Cons of swift-nio

  • More complex and specialized compared to swift-evolution
  • Steeper learning curve for developers new to networking concepts
  • Limited scope, primarily focused on networking rather than language evolution

Code Comparison

swift-nio example:

let group = MultiThreadedEventLoopGroup(numberOfThreads: 1)
let bootstrap = ServerBootstrap(group: group)
    .serverChannelOption(ChannelOptions.backlog, value: 256)
    .childChannelInitializer { channel in
        channel.pipeline.addHandler(EchoHandler())
    }

swift-evolution example:

struct MyProposal: Proposal {
    static let title = "Add a new feature to Swift"
    static let status = .awaitingReview
    static let proposal = SE0999()
    static let authors = ["John Doe"]
}

Summary

While swift-evolution focuses on the Swift language's development process and proposals, swift-nio is a specialized networking framework. swift-nio offers powerful tools for building high-performance networking applications but has a narrower scope compared to swift-evolution's broader impact on the Swift language itself.

96,644

Empowering everyone to build reliable and efficient software.

Pros of Rust

  • More mature and established project with a larger community
  • Focuses on the entire language implementation, not just proposals
  • Offers a more comprehensive view of the language's development

Cons of Rust

  • Larger codebase, potentially more challenging for newcomers to navigate
  • Less focused on language evolution proposals compared to Swift Evolution
  • May require more time to understand the project structure and contribute

Code Comparison

Swift Evolution (proposal example):

public struct SE0001_AllowTrailingClosures {
    public static let proposal = Proposal(
        number: 1,
        status: .implemented(version: "3.0"),
        title: "Allow (most) keywords as argument labels",
        description: """
        Swift should allow the use of all keywords except `inout`, `var`, and `let` as argument labels.
        """
    )
}

Rust (language feature implementation):

pub fn allow_keywords_as_identifiers(input: &str) -> bool {
    match input {
        "inout" | "var" | "let" => false,
        _ => true
    }
}

The Swift Evolution repository focuses on language proposals, while the Rust repository contains the actual implementation of language features. Swift Evolution's code is more structured around proposal documentation, whereas Rust's code directly implements language functionality.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Swift Evolution

https://www.swift.org/swift-evolution/

This repository tracks the ongoing evolution of the Swift programming language, standard library, and package manager.

Goals and Release Notes

VersionAnnouncedReleased
Swift 6.02024-02-22
Swift 5.102023-08-232024-03-05
Swift 5.92023-03-062023-09-18
Swift 5.82022-11-192023-03-30
Swift 5.72022-03-292022-09-12
Swift 5.62021-11-102022-03-14
Swift 5.52021-03-122021-09-20
Swift 5.42020-11-112021-04-26
Swift 5.32020-03-252020-09-16
Swift 5.22019-09-242020-03-24
Swift 5.12019-02-182019-09-20
Swift 5.02018-09-252019-03-25
Swift 4.22018-02-282018-09-17
Swift 4.12017-10-172018-03-29
Swift 4.02017-02-162017-09-19
Swift 3.12016-12-092017-03-27
Swift 3.02016-05-062016-09-13
Swift 2.22016-01-052016-03-21