Swift for TensorFlow Shuts Down

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • swift

    Discontinued Swift for TensorFlow (by tensorflow)

    Neat! This may have not been well known when they kicked off the project and wrote their reasoning. Here is what they had to say about Scala at the time of the document linked up-thread[0]:

    "Java / C# / Scala (and other OOP languages with pervasive dynamic dispatch): These languages share most of the static analysis problems as Python: their primary abstraction features (classes and interfaces) are built on highly dynamic constructs, which means that static analysis of Tensor operations depends on "best effort" techniques like alias analysis and class hierarchy analysis. Further, because they are pervasively reference-based, it is difficult to reliably disambiguate pointer aliases."

    If they were wrong about that, or if the state of the art has progressed in the meantime, that's great! You may well be right that Scala would be a good / the best choice if they started the project today.

    [0]: https://github.com/tensorflow/swift/blob/main/docs/WhySwiftF...

  • Vapor

    💧 A server-side Swift HTTP web framework.

    > I have the feeling swift never really worked in the server side

    IBM dropped Kitura more than a year ago [1]. There's Vapor [2] which seems popular, but I don't know how much.

    [1]: https://forums.swift.org/t/december-12th-2019/31735

    [2]: https://github.com/vapor/vapor

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

  • py2many

    Transpiler of Python to many other languages

    Python type system is improving. Another point in this ease of use vs type safety spectrum is python -> type safe language static compilation.

    I don't know which one is the best. So I've been experimenting with several.

    https://github.com/adsharma/py2many

  • dataenforce

    Python package to enforce column names & data types of pandas DataFrames

    The dependence on library authors is always a challenge in any language. You might have one author using `[a]` where another uses `PositiveNumeric a, Fin n => NonEmptyList n a` for the same thing. You can always just annotate whatever the library author used (e.g. they return a list of strings, so you use List[str]).

    There are some interesting further add ons that seem very python, allowing you to go further. For example, with a pandas dataframe you can just say your type is a dataframe which isn't so useful, but it's possible to hack your own types onto it in the vein of https://github.com/CedricFR/dataenforce, or use things like https://smarie.github.io/python-vtypes/ to get smarter typing on things the authors didn't type. I expect that trend will continue.

    What fascinates me about python's types is actually the very fact that they are bolted on. You have a language that lets you do crazy things and a type system trying to catch up and make it convenient to verify those crazy things. It's a nice complement to the usual developments of verifying all of the things and slowly extending the set of things you can do.

  • MLJ.jl

    A Julia machine learning framework

    Then you haven't looked at Julia's ecosystem.

    It may not be quite as mature, but it's getting there quickly.

    It's also far more interoperable because of Julia's multiple dispatch and abstract types.

    For example, the https://github.com/alan-turing-institute/MLJ.jl ML framework (sklearn on steroids), works with any table object that implements the Tables.jl interface out of the box, not just with dataframes.

    That's just one example.

  • Enzyme.jl

    Julia bindings for the Enzyme automatic differentiator

    The name of the LLVM AD tool is actually Enzyme [http://enzyme.mit.edu/] (Zygote is a Julia tool)

  • PythonNet

    Python for .NET is a package that gives Python programmers nearly seamless integration with the .NET Common Language Runtime (CLR) and provides a powerful application scripting tool for .NET developers.

    generate code at runtime, so autodiff can be implemented in a library.

    We also have integration with Unity ML Agents for training robotic agents [4].

        [1] https://github.com/pythonnet/pythonnet/

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

  • YOLOv4

    Port of YOLOv4 to C# + TensorFlow

    [3] https://github.com/losttech/YOLOv4

  • smoke-framework

    A light-weight server-side service framework written in the Swift programming language.

    AWS has a Swift runtime for Lambda [0], and Amazon has an open source server framework for Swift, Smoke [1].

    [0] - https://swift.org/blog/aws-lambda-runtime/

    [1] - https://github.com/amzn/smoke-framework

  • julia

    The Julia Programming Language

    That's not so obvious.

    Here's a nice recent example: a new reverse(A; dims) function, which is fast and works in any number of dimensions, and is completely indifferent to where the indices start:

    https://github.com/JuliaLang/julia/pull/37367/files#diff-eb9...

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts