Introduction
Getting Started
Resources
Variables
Allowed Variable Names
Stylistic Conventions
Integers and Floating-Point Numbers
Integers
Floating-Point Numbers
Arbitrary Precision Arithmetic
Numeric Literal Coefficients
Literal zero and one
Mathematical Operations and Elementary Functions
Arithmetic Operators
Bitwise Operators
Updating operators
Numeric Comparisons
Elementary Functions
Complex and Rational Numbers
Complex Numbers
Rational Numbers
Strings
Characters
String Basics
Unicode and UTF-8
Interpolation
Common Operations
Non-Standard String Literals
Regular Expressions
Byte Array Literals
Version Number Literals
Functions
Argument Passing Behavior
The
return
Keyword
Operators Are Functions
Operators With Special Names
Anonymous Functions
Multiple Return Values
Varargs Functions
Optional Arguments
Keyword Arguments
Evaluation Scope of Default Values
Block Syntax for Function Arguments
Further Reading
Control Flow
Compound Expressions
Conditional Evaluation
Short-Circuit Evaluation
Repeated Evaluation: Loops
Exception Handling
Tasks (aka Coroutines)
Scope of Variables
For Loops and Comprehensions
Constants
Types
Type Declarations
Abstract Types
Bits Types
Composite Types
Immutable Composite Types
Declared Types
Tuple Types
Type Unions
Parametric Types
Type Aliases
Operations on Types
Methods
Defining Methods
Method Ambiguities
Parametric Methods
Note on Optional and keyword Arguments
Constructors
Outer Constructor Methods
Inner Constructor Methods
Incomplete Initialization
Parametric Constructors
Case Study: Rational
Conversion and Promotion
Conversion
Promotion
Modules
Summary of module usage
Metaprogramming
Expressions and Eval
Macros
Reflection
Multi-dimensional Arrays
Arrays
Sparse Matrices
Linear algebra
Matrix factorizations
Special matrices
Networking and Streams
Basic Stream I/O
Text I/O
Working with Files
A simple TCP example
Resolving IP Addresses
Parallel Computing
Data Movement
Parallel Map and Loops
Synchronization With Remote References
Scheduling
Distributed Arrays
Constructing Distributed Arrays
Distributed Array Operations
Shared Arrays (Experimental, UNIX-only feature)
ClusterManagers
Running External Programs
Interpolation
Quoting
Pipelines
Calling C and Fortran Code
Mapping C Types to Julia
Accessing Data through a Pointer
Passing Pointers for Modifying Inputs
Garbage Collection Safety
Non-constant Function Specifications
Indirect Calls
Calling Convention
Accessing Global Variables
Passing Julia Callback Functions to C
C++
Handling Platform Variations
Interacting With Julia
The different prompt modes
Key bindings
Embedding Julia
High-Level Embedding
Converting Types
Calling Julia Functions
Memory Management
Working with Arrays
Exceptions
Packages
Package Status
Adding and Removing Packages
Installing Unregistered Packages
Updating Packages
Checkout, Pin and Free
Package Development
Initial Setup
Generating a New Package
Making Your Package Available
Publishing Your Package
Tagging Package Versions
Fixing Package Requirements
Requirements Specification
Performance Tips
Avoid global variables
Avoid containers with abstract type parameters
Type declarations
Break functions into multiple definitions
Write “type-stable” functions
Avoid changing the type of a variable
Separate kernel functions
Access arrays in memory order, along columns
Pre-allocating outputs
Avoid string interpolation for I/O
Fix deprecation warnings
Tweaks
Performance Annotations
Tools
Style Guide
Write functions, not just scripts
Avoid writing overly-specific types
Handle excess argument diversity in the caller
Append
!
to names of functions that modify their arguments
Avoid strange type Unions
Try to avoid nullable fields
Avoid elaborate container types
Avoid underscores in names
Don’t overuse try-catch
Don’t parenthesize conditions
Don’t overuse ...
Don’t use unnecessary static parameters
Avoid confusion about whether something is an instance or a type
Don’t overuse macros
Don’t expose unsafe operations at the interface level
Don’t overload methods of base container types
Be careful with type equality
Do not write
x->f(x)
Frequently Asked Questions
Sessions and the REPL
Functions
Types, type declarations, and constructors
Nothingness and missing values
Julia Releases
Developing Julia
Noteworthy Differences from other Languages
Noteworthy differences from MATLAB
Noteworthy differences from R
Noteworthy differences from Python
The Standard Library
Introduction
Getting Around
All Objects
Types
Generic Functions
Syntax
Iteration
General Collections
Iterable Collections
Indexable Collections
Associative Collections
Set-Like Collections
Dequeues
Strings
I/O
Network I/O
Text I/O
Multimedia I/O
Memory-mapped I/O
Standard Numeric Types
Mathematical Operators
Mathematical Functions
Data Formats
Numbers
BigFloats
Random Numbers
Arrays
Combinatorics
Statistics
Signal Processing
Numerical Integration
Parallel Computing
Distributed Arrays
Shared Arrays (Experimental, UNIX-only feature)
System
C Interface
Errors
Tasks
Events
Reflection
Internals
Sparse Matrices
Linear Algebra
BLAS Functions
Constants
Filesystem
Punctuation
Sorting and Related Functions
Sorting Functions
Order-Related Functions
Sorting Algorithms
Package Manager Functions
Collections and Data Structures
PriorityQueue
Heap Functions
Graphics
Geometry
Unit and Functional Testing
Overview
Handlers
Macros
Functions
Testing Base Julia
Profiling
Basic usage
Accumulation and clearing
Options for controlling the display of profile results
Configuration
Function reference
Base.Cartesian
Principles of usage
Basic syntax
Julia Language
Docs
»
The Julia Standard Library
View page source
The Julia Standard Library
ΒΆ
The Standard Library
Sparse Matrices
Linear Algebra
BLAS Functions
Constants
Filesystem
Punctuation
Sorting and Related Functions
Package Manager Functions
Collections and Data Structures
Graphics
Unit and Functional Testing
Testing Base Julia
Profiling