From a41033bf330a96b63c6d729b8ebb55c8fc0b2563 Mon Sep 17 00:00:00 2001 From: Lyndon White Date: Thu, 26 Sep 2019 12:54:30 +0100 Subject: [PATCH] Update Readme --- README.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 28ca5ebb6..4bd6e2cdb 100644 --- a/README.md +++ b/README.md @@ -3,22 +3,23 @@ [![Travis](https://travis-ci.org/JuliaDiff/ChainRules.jl.svg?branch=master)](https://travis-ci.org/JuliaDiff/ChainRules.jl) [![Coveralls](https://coveralls.io/repos/github/JuliaDiff/ChainRules.jl/badge.svg?branch=master)](https://coveralls.io/github/JuliaDiff/ChainRules.jl?branch=master) -**Docs:* +**Docs:** [![](https://img.shields.io/badge/docs-master-blue.svg)](https://JuliaDiff.github.io/ChainRules.jl/dev) [![](https://img.shields.io/badge/docs-stable-blue.svg)](https://JuliaDiff.github.io/ChainRules.jl/stable) The ChainRules package provides a variety of common utilities that can be used by downstream automatic differentiation (AD) tools to define and execute forward-, reverse-, and mixed-mode primitives. -This package is a WIP; the framework is essentially there, but there are a bunch of TODOs, virtually no tests, etc. PRs welcome! Documentation is incoming, which should help if you'd like to contribute. +The Core logic of ChainRules is implemented in [ChainRulesCore.jl](https://github.com/JuliaDiff/ChainRulesCore.jl). +If adding ChainRules support to your package (defining `rrule`s or `ffules` you only need to depend on that very light-weight package. +This repo: ChainRules.jl is what people actually use, it reexports all the ChainRules functionality, +and has all the rules for the julia standard library. -Here are some of the basic goals for the package: -- First-class support for complex differentiation via Wirtinger derivatives. +Here are some of the basic goals for the package: - Mixed-mode composability without being coupled to a specific AD implementation. - +- Control-inverted design: rule authors can fully specify derivatives in a concise manner while naturally allowing the caller to compute only what they need. - Propagation semantics built-in, with default implementations that allow rule authors to easily opt-in to common optimizations (fusion, increment elision, memoization, etc.). -- Control-inverted design: rule authors can fully specify derivatives in a concise manner while naturally allowing the caller to compute only what they need. The ChainRules source code follows the [YASGuide](https://github.com/jrevels/YASGuide).