:orphan:

Core Development Guide
=======================

The documentation of the core components of Aesara is still a work in
progress. For now this is a list of bits and pieces on the subject,
some of them might be outdated though:


* :ref:`aesara_type` -- Tutorial for writing a new type in Aesara. It
  introduces the basics concerning Aesara datatypes.

* :ref:`aesara_ctype` -- Tutorial on how to make your type C-friendly.

* :ref:`views_and_inplace` -- This is somewhere between extending Aesara and
  describing how Aesara works internally; it talks about views and inplace
  operations.

* :ref:`optimization` -- Tutorial on how optimization work in Aesara.

* :ref:`pipeline` -- Describes the steps of compiling an Aesara Function.

* :ref:`graphstructures` -- Describes the symbolic graphs generated by
  :mod:`aesara.scan`.

* :ref:`unittest` -- Tutorial on how to use unittest in testing Aesara.

* :ref:`sandbox_debugging_step_mode` -- How to step through the execution of
  an Aesara function and print the inputs and outputs of each op.

* :ref:`sandbox_elemwise` -- Description of element wise operations.

* :ref:`sandbox_maxgotcha` -- Describes the difference between ``numpy.max``
  and Python max (something to consider when using max).

* :ref:`sandbox_randnb` -- Description of how Aesara deals with random
  numbers.

* :ref:`sparse` -- Description of the ``sparse`` type in Aesara.
