JuliaLang / julia

The Julia Programming Language
https://julialang.org/
MIT License
45.6k stars 5.48k forks source link

build and LinearAlgebra markdown #56147

Open spaette opened 3 days ago

spaette commented 3 days ago

The .html and .pdf do not render this correctly.

$ grep -A 4 "level 1" julia/stdlib/LinearAlgebra/docs/src/index.md
The level 1 BLAS functions were first proposed in [(Lawson, 1979)][Lawson-1979] and
define operations between scalars and vectors.

[Lawson-1979]: https://dl.acm.org/doi/10.1145/355841.355847

$ 

julia-1.11.0.pdf

Image

The similar regarding the code pertaining to Dongarra.

The .html and .pdf do not render this correctly.

$ grep -A 13 "building dependencies" julia/doc/src/devdocs/build/build.md
- **[GNU make]**                — building dependencies.
- **[gcc & g++][gcc]** (>= 7.1) or **[Clang][clang]** (>= 5.0, >= 9.3 for Apple Clang) — compiling and linking C, C++.
- **[libatomic][gcc]**          — provided by **[gcc]** and needed to support atomic operations.
- **[python]** (>=2.7)          — needed to build LLVM.
- **[gfortran]**                — compiling and linking Fortran libraries.
- **[perl]**                    — preprocessing of header files of libraries.
- **[wget]**, **[curl]**, or **[fetch]** (FreeBSD) — to automatically download external libraries.
- **[m4]**                      — needed to build GMP.
- **[awk]**                     — helper tool for Makefiles.
- **[patch]**                   — for modifying source code.
- **[cmake]** (>= 3.4.3)        — needed to build `libgit2`.
- **[pkg-config]**              — needed to build `libgit2` correctly, especially for proxy support.
- **[powershell]** (>= 3.0)     — necessary only on Windows.
- **[which]**                   — needed for checking build dependencies.
$ grep -A 54 "compiler infrastructure" julia/doc/src/devdocs/build/build.md
- **[LLVM]** (15.0 + [patches](https://github.com/JuliaLang/llvm-project/tree/julia-release/15.x)) — compiler infrastructure (see [note below](#llvm)).
- **[FemtoLisp]**            — packaged with Julia source, and used to implement the compiler front-end.
- **[libuv]**  (custom fork) — portable, high-performance event-based I/O library.
- **[OpenLibm]**             — portable libm library containing elementary math functions.
- **[DSFMT]**                — fast Mersenne Twister pseudorandom number generator library.
- **[OpenBLAS]**             — fast, open, and maintained [basic linear algebra subprograms (BLAS)]
- **[LAPACK]**               — library of linear algebra routines for solving systems of simultaneous linear equations, least-squares solutions of linear systems of equations, eigenvalue problems, and singular value problems.
- **[MKL]** (optional)       – OpenBLAS and LAPACK may be replaced by Intel's MKL library.
- **[SuiteSparse]**          — library of linear algebra routines for sparse matrices.
- **[PCRE]**                 — Perl-compatible regular expressions library.
- **[GMP]**                  — GNU multiple precision arithmetic library, needed for `BigInt` support.
- **[MPFR]**                 — GNU multiple precision floating point library, needed for arbitrary precision floating point (`BigFloat`) support.
- **[libgit2]**              — Git linkable library, used by Julia's package manager.
- **[curl]**                 — libcurl provides download and proxy support.
- **[libssh2]**              — library for SSH transport, used by libgit2 for packages with SSH remotes.
- **[mbedtls]**              — library used for cryptography and transport layer security, used by libssh2
- **[utf8proc]**             — a library for processing UTF-8 encoded Unicode strings.
- **[LLVM libunwind]**       — LLVM's fork of [libunwind], a library that determines the call-chain of a program.
- **[ITTAPI]**               — Intel's Instrumentation and Tracing Technology and Just-In-Time API.

[GNU make]:     https://www.gnu.org/software/make
[patch]:        https://www.gnu.org/software/patch
[wget]:         https://www.gnu.org/software/wget
[m4]:           https://www.gnu.org/software/m4
[awk]:          https://www.gnu.org/software/gawk
[gcc]:          https://gcc.gnu.org
[clang]:        https://clang.llvm.org
[python]:       https://www.python.org/
[gfortran]:     https://gcc.gnu.org/fortran/
[curl]:         https://curl.haxx.se
[fetch]:        https://www.freebsd.org/cgi/man.cgi?fetch(1)
[perl]:         https://www.perl.org
[cmake]:        https://www.cmake.org
[OpenLibm]:     https://github.com/JuliaLang/openlibm
[DSFMT]:        https://github.com/MersenneTwister-Lab/dSFMT
[OpenBLAS]:     https://github.com/xianyi/OpenBLAS
[LAPACK]:       https://www.netlib.org/lapack
[MKL]:          https://software.intel.com/en-us/articles/intel-mkl
[SuiteSparse]:  https://people.engr.tamu.edu/davis/suitesparse.html
[PCRE]:         https://www.pcre.org
[LLVM]:         https://www.llvm.org
[LLVM libunwind]: https://github.com/llvm/llvm-project/tree/main/libunwind
[FemtoLisp]:    https://github.com/JeffBezanson/femtolisp
[GMP]:          https://gmplib.org
[MPFR]:         https://www.mpfr.org
[libuv]:        https://github.com/JuliaLang/libuv
[libgit2]:      https://libgit2.org/
[utf8proc]:     https://julialang.org/utf8proc/
[libunwind]:    https://www.nongnu.org/libunwind
[libssh2]:      https://www.libssh2.org
[mbedtls]:      https://tls.mbed.org/
[pkg-config]:   https://www.freedesktop.org/wiki/Software/pkg-config/
[powershell]:   https://docs.microsoft.com/en-us/powershell/scripting/wmf/overview
[which]:        https://carlowood.github.io/which/
[ITTAPI]:       https://github.com/intel/ittapi
$ 
spaette commented 2 days ago

@giordano

julia-1.11.0.pdf

Chapter 104 Documentation of Julia's Internals

The footnotes for 104.24 appear in the next subchapter 104.25.

$ grep -A 3 "partial lattice" julia/doc/src/devdocs/EscapeAnalysis.md
These attributes can be combined to create a partial lattice that has a finite height, given
the invariant that an input program has a finite number of statements, which is assured by Julia's semantics.
The clever part of this lattice design is that it enables a simpler implementation of
lattice operations by allowing them to handle each lattice property separately[^LatticeDesign].
$ grep -A 26 "alternative approach" julia/doc/src/devdocs/EscapeAnalysis.md
[^LatticeDesign]: Our type inference implementation takes the alternative approach,
    where each lattice property is represented by a special lattice element type object.
    It turns out that it started to complicate implementations of the lattice operations
    mainly because it often requires conversion rules between each lattice element type object.
    And we are working on [overhauling our type inference lattice implementation](https://github.com/JuliaLang/julia/pull/42596)
    with `EscapeInfo`-like lattice design.

[^MM02]: _A Graph-Free approach to Data-Flow Analysis_.
         Markas Mohnen, 2002, April.
         <https://api.semanticscholar.org/CorpusID:28519618>.

[^BackandForth]: Our type inference algorithm in contrast is implemented as a forward analysis,
    because type information usually flows from "definition" to "usage" and it is more
    natural and effective to propagate such information in a forward way.

[^Dynamism]: In some cases, however, object fields can't be analyzed precisely.
    For example, object may escape to somewhere `EscapeAnalysis` can't account for possible memory effects on it,
    or fields of the objects simply can't be known because of the lack of type information.
    In such cases `AliasInfo` property is raised to the topmost element within its own lattice order,
    and it causes succeeding field analysis to be conservative and escape information imposed on
    fields of an unanalyzable object to be propagated to the object itself.

[^JVM05]: _Escape Analysis in the Context of Dynamic Compilation and Deoptimization_.
          Thomas Kotzmann and Hanspeter Mössenböck, 2005, June.
          <https://dl.acm.org/doi/10.1145/1064979.1064996>.

[^ArrayDimension]: Otherwise we will need yet another forward data-flow analysis on top of the escape analysis.
$ 
spaette commented 2 days ago

the developers seem a bit chary about mentioning C0 control codes and GNU Emacs in the REPL docs

stdlib/REPL/docs/src/index.md

@mbauman

If the footnote matter is resolved, I would consider footnotes for either the paragraph before or after the table in the REPL documentation.

L. Peter Deutsch and Edmund C. Berkeley first published on a READ-EVAL-PRINT cycle in the documentation for PDP-1 LISP.

Les Earnest created the META key while working at Stanford University.

Guy Steele designed the TECO-EMACS comand set; GNU EMACS can be customized to use the SUPER and HYPER modifier keys.


Free Software Foundation

If the table content was influenced by FSF's bash manual at all my preference would be that it was more consistent therewith.

julia ^F

Move right one character

bash C-f

Move forward one character.

Here's a link to an early EMACS manual.

https://dspace.mit.edu/handle/1721.1/6329

Here's a link which includes some text files for TECO EMACS.

https://github.com/larsbrinkhoff/emacs-history

https://github.com/larsbrinkhoff/emacs-history/tree/sources/ams

ai-emacs.tgz TECO EMACS 162 from Alfred M. Szmidt.

emacs.doc is a plain text file

ai-emacs1.tgz TECO EMACS 162 from Alfred M. Szmidt.

spaette commented 1 hour ago

https://docs.julialang.org/en/v1/devdocs/build/build/

removing the useless <strong> element

[gcc &amp; g++][gcc]

should actually be

<a href="https://gcc.gnu.org/">gcc &amp; g++</a>