Skip to content

shabalind/swift-structural

 
 

Repository files navigation

swift-structural

This repo includes example protocol implementations for automatic derived conformances based on the Structural protocol. It is meant to accompany the Swift evolution proposal, and should not be depended on as a library.

The codebase is structured in the following modules:

  • StructuralCore
  • StructuralExamples
  • StructuralBenchmarks

StructuralCore

This module contains definition of the Structural protocol, and additional data types necessary to model the structural representations.

StructuralExamples

We implement a number of protocols, using the Structural.

Including protocols inspired by the Swift standard library:

  • CustomEquatable
  • CustomComparable
  • CustomHashable
  • CustomDebugString
  • EncodeJSON
  • DecodeJSON

And also protocols based on the Swift for TensorFlow libraries:

  • Additive
  • Zero
  • InplaceAdd
  • ScaleBy
  • DefaultInitializable

Lastly, we also provide examples of hand-written conformances to Structural for the following datatypes:

  • enums: ASCII, Color, BinaryTree
  • structs: PointN (for N in 1..16)

In the future, those conformances are going to be generated by the compiler.

StructuralBenchmarks

This module includes benchmarks done using (swift-benchmark)[https://github.com/google/swift-benchmark) framework.

You can run benchmarks using the following command:

$ swift run -c release StructuralBenchmarks

An example output of the benchmark run can be found in [benchmark.results] file.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Swift 100.0%