All Projects → jessesquires → swift-proposal-analyzer

jessesquires / swift-proposal-analyzer

Licence: MIT License
An analysis of Swift Evolution proposals

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to swift-proposal-analyzer

RAnalysisSkeleton
Files and settings commonly used in analysis projects with R
Stars: ✭ 15 (-74.14%)
Mutual labels:  analysis
performabot
Continuous performance analysis reports for software projects 🤖
Stars: ✭ 40 (-31.03%)
Mutual labels:  analysis
syncopy
Systems Neuroscience Computing in Python: user-friendly analysis of large-scale electrophysiology data
Stars: ✭ 19 (-67.24%)
Mutual labels:  analysis
hotspot3d
3D hotspot mutation proximity analysis tool
Stars: ✭ 43 (-25.86%)
Mutual labels:  analysis
micro-code-analyser
A tiny Node.js microservice to detect the language of a code snippet
Stars: ✭ 21 (-63.79%)
Mutual labels:  analysis
Kali-Linux-Tools-Interface
Graphical Web interface developed to facilitate the use of security information tools.
Stars: ✭ 169 (+191.38%)
Mutual labels:  analysis
root pandas
A Python module for conveniently loading/saving ROOT files as pandas DataFrames
Stars: ✭ 108 (+86.21%)
Mutual labels:  analysis
bundle-inspector-webpack-plugin
Bundle Inspector | Analysis Tool for Webpack
Stars: ✭ 19 (-67.24%)
Mutual labels:  analysis
titanic survival exploration
Udacity Machine Learning Nano degree Program Project Predicting Passenger Survival
Stars: ✭ 18 (-68.97%)
Mutual labels:  analysis
redis-key-dashboard
This tool allows you to do a small analysis of the amount of keys and memory you use in Redis. It allows you to see overlooked keys and notice overuse.
Stars: ✭ 42 (-27.59%)
Mutual labels:  analysis
pointcloud-processing
A point cloud visualisation and analysis library for Processing.
Stars: ✭ 20 (-65.52%)
Mutual labels:  analysis
pyemma tutorials
How to analyze molecular dynamics data with PyEMMA
Stars: ✭ 49 (-15.52%)
Mutual labels:  analysis
knip
KNIME Image Processing Extension
Stars: ✭ 45 (-22.41%)
Mutual labels:  analysis
liground
A free, open-source and modern Chess Variant Analysis GUI for the 21st century
Stars: ✭ 41 (-29.31%)
Mutual labels:  analysis
mdtoolbox
MDToolbox: A MATLAB/Octave toolbox for statistical analysis of molecular dynamics trajectories
Stars: ✭ 21 (-63.79%)
Mutual labels:  analysis
should-i-play-f6
Chess project to analyze the statistical effect of playing f3 (as white) or f6 (as black) on the outcome of the game.
Stars: ✭ 15 (-74.14%)
Mutual labels:  analysis
Reloaded.Memory.SigScan
Simple good performance byte pattern/PE signature scanner, allowing upwards of 2000MB/s per core (10000+MB/s with AVX) on modern hardware.
Stars: ✭ 37 (-36.21%)
Mutual labels:  analysis
clana
CLANA is a toolkit for classifier analysis.
Stars: ✭ 28 (-51.72%)
Mutual labels:  analysis
MGT-python
Musical Gestures Toolbox for Python
Stars: ✭ 25 (-56.9%)
Mutual labels:  analysis
msmtools
Tools for estimating and analyzing Markov state models
Stars: ✭ 31 (-46.55%)
Mutual labels:  analysis

swift-proposal-analyzer Build Status

An analysis of Swift Evolution proposals

About

All of the swift-evolution proposals are publicly available on GitHub, however they are just markdown files — plain text. There's no way to query or filter the proposals. For example, you can't search for "all proposals written by Chris Lattner" or "all rejected proposals" or "all proposals that mention Objective-C".

This project contains tools to analyze, query, and filter the Swift Evolution proposals based on any criteria you like.

This project accompanies my talk from FrenchKit.

Requirements

  • macOS 10.11+
  • Xcode 8+
  • Swift 3.0+

Setup

This repo contains a number of different components:

  • The swift-evolution repo is a git submodule. This is how proposals are synced to stay updated.
  • main.swift is a swift script that generates playground pages for all of the proposals. You can open proposal-page-generator.xcodeproj to modify the script.
  • ProposalAnalyzer.xcodeproj is a CocoaTouch framework that includes all the source code and the playground. This framework is imported in the playground.
  • swift-proposal-analyzer.playground is the playground (part of the .xcodeproj) that contains:
    • All of the proposals as playground pages
    • All of the proposals as raw Resources/
    • Examples
  • update_proposals.sh is a bash script that does the following:
    1. Updates the swift-evolution submodule
    2. Copies the proposals from the submodule directory, into the playground Resources/ directory
    3. Runs main.swift to generate the playground pages

Cloning this repo

$ git clone https://github.com/jessesquires/swift-proposal-analyzer.git
$ cd swift-proposal-analyzer/
$ git submodule init
$ git submodule update --remote
$ ./update_proposals.sh

Usage

Open and build ProposalAnalyzer.xcodeproj, then select the swift-proposal-analyzer.playground and run it like a normal playground.

After parsing completes, you'll have an array of Proposal types:

public final class Proposal {
    public let title: String
    public let seNumber: String

    public let authors: [Author]
    public let status: Status

    public let fileName: String
    public let fileContents: String
    public let wordCount: Int
}

Most proposal metadata is available, as well as the raw file contents. You can now perform different queries or apply filters to the proposal data.

Examples

// Find proposals implemented in Swift 3.0
let implementedInSwift3 = analyzer.proposalsWith(status: .implemented(.v3_0))
// Find proposals authored or co-authored by Chris Lattner
let proposalsByLattner = analyzer.proposals.filter { p -> Bool in
    p.writtenBy("Chris Lattner")
}
// Find total mentions of "Objective-C" across all proposals
let count = analyzer.occurrences(of: "Objective-C")

Documentation

You can find the (unfinished) docs here.

Caveats

Some of the code here is pretty "quicky and dirty", but it works! So ¯\_(ツ)_/¯ 😆 If there's a better way to do something, please submit a pull request!

This is a small dataset, so any conclusions should be taken with a grain of salt. 😄

Credits

Created and maintained by @jesse_squires.

License

Released under an MIT License. See LICENSE for details.

Copyright © 2016-present Jesse Squires.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].