Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
10000 commits
Select commit Hold shift + click to select a range
bf2298e
Use existing Sample project
josevalim Nov 27, 2025
66165e6
Enable Markdown rule: Multiple headings with the same content (#14967)
eksperimental Nov 28, 2025
68ebb78
Correct SPDX-FileCopyrightText (#14968)
eksperimental Nov 28, 2025
10bc090
CI: Move POSIX compliance action to its own file (#14969)
eksperimental Nov 28, 2025
0b4d0f3
Fix Plataformatec Copyright (#14970)
maennchen Nov 28, 2025
abd73a8
Tighten up Markdownlint rule "Trailing punctuation in heading" (#14966)
eksperimental Nov 28, 2025
31ec8cc
Fix dialyzer warnings on EEx.eval_string (#14971)
michallepicki Nov 29, 2025
1da7feb
CI: Minor improvements/fixes (#14973)
eksperimental Nov 29, 2025
2acf580
CI: Update Ubuntu to latest LTS version (#14974)
eksperimental Nov 29, 2025
e2c4c07
Document ternary operators, closes #14959 (#14964)
josevalim Dec 1, 2025
ff2b738
Track domain keys when creating and updating maps (using the map synt…
josevalim Dec 1, 2025
7ad99b5
Fix starter/name in Task's report callback (#14975)
grzuy Dec 1, 2025
6710d7e
Unify :empty_list and :list domains in maps
gldubc Nov 24, 2025
6b519ae
Optimize Calendar.ISO.date_from_iso_days (#14976)
dkuku Dec 1, 2025
3172f74
CI: Minor improvements to Release Notifications action (#14981)
eksperimental Dec 2, 2025
521b16c
CI: Minor improvements to Markdown action (#14979)
eksperimental Dec 2, 2025
bd4c232
CI: Minor improvements to POSIX compliance action (#14980)
eksperimental Dec 2, 2025
e66a799
CI: Minor improvements to release_pre_built/action.yml (#14984)
eksperimental Dec 2, 2025
b58cdd8
CI: Minor improvements to release.yml (#14983)
eksperimental Dec 2, 2025
284b190
Clean up CI and unify coverage and docs build (#14986)
josevalim Dec 2, 2025
31c9c84
Improve coverage for map_update
josevalim Dec 1, 2025
a13f38e
Implement map_put_key using new domain aware map_put
josevalim Dec 2, 2025
2b63546
Generalize map_update so it can power delete, pop, replace, and more
josevalim Dec 2, 2025
41f9bcf
Do not bake nil assumption into map_get/2
josevalim Dec 3, 2025
1aa188f
Add map_to_list
gldubc Nov 5, 2025
cad69f7
CI: Fix continue-on-error (#14991)
eksperimental Dec 3, 2025
3c5e968
doc: observer example create_bucket (#14990)
h-phil Dec 3, 2025
a6951d0
Document requirements without operator, closes #14988
josevalim Dec 3, 2025
509e715
Support fetching abstract code for modules compiled with Elixir v1.14…
josevalim Dec 3, 2025
2ac361a
Fix #iex:break as part of multi-line prompts, closes #14992
josevalim Dec 3, 2025
ac44e72
Keep collecting buffer in IEx parser
josevalim Dec 3, 2025
1cadeff
Revert Stream transform simplification causing regression (#14993)
sabiwara Dec 4, 2025
08b559f
Pass the caller module to unique_var to avoid confusion
josevalim Dec 4, 2025
4c10b43
Do not crash on invalid metadata in deprecated backends, closes #14995
josevalim Dec 4, 2025
fc07f45
Improve docs on set-theoretic syntax reference
josevalim Dec 4, 2025
030660a
Type Map.to_list/1, Map.keys/1, and Map.values/1
josevalim Dec 5, 2025
d30b22f
Fix minor typo in mix-and-otp docs (#14998)
jontoye Dec 6, 2025
8fc181f
fix grammar in restart strategies section of tasks-and-gen-tcp (#15000)
jontoye Dec 7, 2025
904adda
Calculate date_from_iso_days using neri_schneider algorithm (#14999)
dkuku Dec 7, 2025
82983cf
Remove improper_list from type specification
josevalim Dec 5, 2025
e1ff781
Fix deprecation warning on !left in right, closes #15001
josevalim Dec 8, 2025
09fc63d
Remove uneeded newline
josevalim Dec 8, 2025
34004a2
Preserve gradual mode on tuple and map operations
josevalim Dec 8, 2025
b79b08d
Fix spec for t:ExUnit.Callbacks.child_spec_overrides/2 (#15006)
whatyouhide Dec 9, 2025
c80a3b1
Fix unnecessary recompilation when dbg_callback is modified at runtim…
jechol Dec 10, 2025
5f608c4
Handle term() in optional_static?
josevalim Dec 8, 2025
1110a95
Fix test assertion
josevalim Dec 10, 2025
ee75b22
Enhance list type handling and add list_proper? function (#15002)
gldubc Dec 10, 2025
0e3465d
Improvements to list_proper?
josevalim Dec 10, 2025
79c2842
Convert list_proper? into list_of
josevalim Dec 10, 2025
ab843d0
Add type checking for Map.from_keys/2
josevalim Dec 10, 2025
77ef258
Update copyrights
josevalim Dec 10, 2025
7fbf48c
Type check Map.fetch!/2 and :maps.take/2
josevalim Dec 10, 2025
18c81d6
Add type checking for Map.fetch/2 and improve docs
josevalim Dec 11, 2025
a6ba0cb
Type check Map.replace!/3
josevalim Dec 11, 2025
de32dff
Convert maps to list before traversing in descr
josevalim Dec 11, 2025
62d3e61
Improvements to Descr.map_update to support put operations
josevalim Dec 11, 2025
0b3dc13
Avoid warnings in suite that are now caught by the type system
josevalim Dec 12, 2025
a09fa10
Fix parser crash on missing parentheses on expression following opera…
lukaszsamson Dec 12, 2025
d831a00
Unify clauses by extracting location and op
josevalim Dec 12, 2025
a9aac52
Type check Map.put/3 and Map.delete/2
josevalim Dec 12, 2025
70e23a4
Test inferred types for Map.new/0 and Map.equal?/2
josevalim Dec 12, 2025
b60e424
Typecheck Map.from_struct/1
josevalim Dec 12, 2025
0435602
Support filtering `mix deps` output (#15009)
rhcarvalho Dec 14, 2025
fabbf5e
Do not store not_set() on closed maps
josevalim Dec 12, 2025
aee1747
Type check Map.pop!/2, Map.pop/2, and Map.pop/3
josevalim Dec 12, 2025
bd909cb
Simplify message ordering assertions
josevalim Dec 14, 2025
af3624c
Mention how zip_with/2 could be use as a transpose function (#15012)
sabiwara Dec 14, 2025
5c586da
Type Map.update!/3
josevalim Dec 14, 2025
f58e02a
Type check Map.get/2, Map.get/3, Map.get_lazy/3
josevalim Dec 15, 2025
2d32724
Type Map.replace/3 and Map.replace_lazy/3
josevalim Dec 15, 2025
0f3fdcd
Type Map.put_new/3 and Map.put_new_lazy/3
josevalim Dec 15, 2025
e609d29
Type Map.pop_lazy/3
josevalim Dec 15, 2025
297bd84
Type Map.update/4
josevalim Dec 15, 2025
67baf68
Properly propagate if_set on Map operations
josevalim Dec 15, 2025
743fea7
Update CHANGELOG
josevalim Dec 15, 2025
72435c4
Add text to pure text blocks
josevalim Dec 15, 2025
e622a26
Properly preserve function dynamic type on application
josevalim Dec 15, 2025
0f00cb0
Warn when project app name matches a dependency (#15013)
pckrishnadas88 Dec 16, 2025
14bd4b5
Streamline loader code and tests
josevalim Dec 16, 2025
68207c0
Remove alias bit from macro, closes #15018
josevalim Dec 16, 2025
bb9721f
More robust git version parsing (#15019)
jeffreylo Dec 17, 2025
ec26774
Fix arity of Map.replace!/3
josevalim Dec 17, 2025
67431fc
Fix typo in CHANGELOG.md about type checking maps (#15020)
Gazler Dec 17, 2025
995f7fc
Optimize protocol consolidation
josevalim Dec 19, 2025
743fa8a
Propagate BDD leaf nodes down the tree on intersections
josevalim Dec 20, 2025
9d8df88
Only compute literal intersection if C is not bdd bot
josevalim Dec 20, 2025
5f60c39
Further simplify intersections
josevalim Dec 21, 2025
6ce5044
Optimize leaf intersections in differences
josevalim Dec 22, 2025
f9ebeaa
Make leaf intersection recursive
josevalim Dec 22, 2025
0e3d22f
bdd_bottom -> bdd_bot
josevalim Dec 22, 2025
1921765
Fix Kernel defstruct types docs phrasing (#15024)
narslan Dec 23, 2025
1445e8d
Optimize eq intersection branches
josevalim Dec 22, 2025
07889d8
Indent duplicate types in Registry docs
josevalim Dec 25, 2025
2cd8a57
Fix dead link to what was "The need for monitoring" but is now "Links…
nabijaczleweli Dec 26, 2025
0473fec
Bump azure/trusted-signing-action from 0.5.10 to 0.5.11 (#15004)
dependabot[bot] Dec 29, 2025
6948d08
Bump actions/checkout from 6.0.0 to 6.0.1 (#15005)
dependabot[bot] Dec 29, 2025
f7904a4
Bump actions/upload-artifact from 5.0.0 to 6.0.0 (#15015)
dependabot[bot] Dec 29, 2025
7a01f5b
Bump actions/download-artifact from 6.0.0 to 7.0.0 (#15016)
dependabot[bot] Dec 29, 2025
e6f90bd
Bump DavidAnson/markdownlint-cli2-action from 21.0.0 to 22.0.0 (#15017)
dependabot[bot] Dec 29, 2025
fc747ff
Update CI workflow to remove paths-ignore
josevalim Dec 29, 2025
8d8111a
Convert (most) links to https (#15028)
davydog187 Dec 30, 2025
3c8fe86
Faise on --min-cycle-label <= 0 (#15027)
davydog187 Dec 30, 2025
6d43358
Refactor variable tracking in patterns to prepare for guards (#15026)
josevalim Dec 30, 2025
ee87c1c
Keep precise variables for lists heads and map domain keys, closes #1…
josevalim Dec 30, 2025
5f616e2
Remove TODOs
josevalim Dec 30, 2025
19c628a
Mark invididual guards of ||, &&, if, and unless as generated
josevalim Dec 30, 2025
5625993
Do full initial traversal of args paths
josevalim Dec 30, 2025
53a5675
Raise ArgumentError for invalid Enum.count_until (#15029)
davydog187 Dec 30, 2025
fff97fd
Refactor shared entry points for args, match, generators
josevalim Dec 30, 2025
a077a6e
count_until: ensure is_integer when raising argument error (#15030)
novaugust Dec 31, 2025
94ba621
Remove double quotes from printed strings in Enum.each example (#15031)
Remnant-et-al Dec 31, 2025
3884e7a
Do not check the position in Regex errors, closes #15033
josevalim Jan 1, 2026
f1bbb2c
Infer types from guards and do post-inference on stdlib (#15032)
josevalim Jan 2, 2026
c35f651
Analyze conditional orelse and when
josevalim Jan 3, 2026
5b4ee56
Analyze conditional on :erlang.or/2 and :erlang.and/2
josevalim Jan 3, 2026
0f67706
Optimize or/and/orelse/andalso by unnesting traversals
josevalim Jan 3, 2026
88cbabf
Skip :eio files in File.cp_r (#15035)
viniciusmuller Jan 3, 2026
ad67ac0
Mark arg in range as generated, closes #15037
josevalim Jan 3, 2026
a4e7a2d
Move variable deps and paths to context for reuse
josevalim Jan 4, 2026
caea8bc
Move conditional vars into an official API
josevalim Jan 4, 2026
aa22242
Use conditional vars when applying across modules
josevalim Jan 4, 2026
be0f3ae
Propagate types from guards to matches
josevalim Jan 4, 2026
ea59662
Ensure refinements propagate across pins, clauses, and body
josevalim Jan 4, 2026
5abc024
Fix doc link in ExUnit.Formatter
whatyouhide Jan 5, 2026
9815517
Move apply responsibilities into Apply module
josevalim Jan 5, 2026
ad7559f
Infer types from length, map_size, tuple_size equality checks
josevalim Jan 5, 2026
386c5d9
Infer types from length, map_size, tuple_size comparison checks
josevalim Jan 5, 2026
7fb01d3
Remove duplication and limit inferred size of tuples
josevalim Jan 5, 2026
99eae95
Unify boolean checks into a single operation
josevalim Jan 5, 2026
1b234ca
Bump manifest version due to orelse/andalso
josevalim Jan 6, 2026
4ee0241
Represent bitstring and binary as distinct types (#15038)
josevalim Jan 7, 2026
6bace04
Fix @doc for bitstring_type?/1 (#15039)
sabiwara Jan 7, 2026
9721759
Improve error message for mismatched patterns
josevalim Jan 8, 2026
205a1ec
Add IO.iodata_empty?/0
josevalim Jan 9, 2026
583737d
Update CHANGELOG
josevalim Jan 9, 2026
2a2be0a
Track alias defined through require usage, closes #14789
josevalim Jan 9, 2026
15f2165
Replace binary_size with byte_size in Protocol moduledoc (#15043)
narslan Jan 9, 2026
45de6e5
Add type inference for literal equality in guards (#15041)
josevalim Jan 9, 2026
0f9d919
Release v1.20.0-rc.0
josevalim Jan 9, 2026
1752058
Do not crash on conditional variables inside multi-module apply
josevalim Jan 10, 2026
d653d15
CI: Move license compliance to its own file (#14982)
eksperimental Jan 10, 2026
d8ed2b9
Run license compliance on the same workflows as CI
josevalim Jan 10, 2026
7c13e99
Do not use opaque in MapSet, closes #14837
josevalim Jan 10, 2026
8767c5b
Properly unpack map fields in descr before enum operations, closes #1…
josevalim Jan 10, 2026
e586ed5
Optimize variable propagation by only visiting nodes once and avoidin…
josevalim Jan 10, 2026
bfa154e
Consider subtyping on bitstring segments
josevalim Jan 10, 2026
7f5e4e3
Keep gradual mode in bitstrings
josevalim Jan 10, 2026
f2ff3a7
More docs
josevalim Jan 10, 2026
d8322e3
Optimize bdd differences of disjoint literals (#15050)
josevalim Jan 10, 2026
61f5505
Optimize tuple difference by checking for disjoint tagged tuples
josevalim Jan 10, 2026
9af054f
Add types for :erlang.split_binary/2
josevalim Jan 10, 2026
f00cb3a
Properly handle bitstrings inside guards, closes #15052
josevalim Jan 11, 2026
ae38331
Deal with struct keys in map updates with atom domains
josevalim Jan 11, 2026
bc1a862
Update CHANGELOG, closes #15058
josevalim Jan 12, 2026
dd284bb
Reduce travervals in map_all_but_one
josevalim Jan 12, 2026
a9a0969
Also optimize different between structs
josevalim Jan 12, 2026
fd6c6af
Simplify bdd_difference code to discard differences of negations
josevalim Jan 12, 2026
e5dc693
Only perform eager literal intersection when maps are closed, closes …
josevalim Jan 13, 2026
cb472c1
Bump actions/checkout from 6.0.0 to 6.0.1 (#15059)
dependabot[bot] Jan 13, 2026
3bb5f92
Release v1.20.0-rc.1
josevalim Jan 13, 2026
3b75c46
Do not use opaque type for URI authority (#15062)
sabiwara Jan 14, 2026
b523a8e
Simplify struct error message as it won't be deprecated
josevalim Jan 14, 2026
19cddfe
Use Map.to_list instead of Enum.to_list, closes #15064
josevalim Jan 15, 2026
0862491
Add type checking for :erlang.map_get/2 to improve is_struct precision
josevalim Jan 15, 2026
1b0dff7
Do not warn on defaults from defoverridable, closes #15061
josevalim Jan 15, 2026
61d82a9
More fixes and tests for inlined struct opacity issues (#15063)
sabiwara Jan 16, 2026
8def030
Use type warning instead of typing violation, closes #15065
josevalim Jan 16, 2026
ebfebed
Fix typo in 'a implementation'
josevalim Jan 16, 2026
45734fe
Fix minor typos in docs and comments (#15068)
sofiabordagorry Jan 16, 2026
32082d1
Add ready to copy example in test_ignore_filters doc for frequent use…
sabiwara Jan 18, 2026
a26c321
Bump azure/trusted-signing-action from 0.5.11 to 1.0.0 (#15072)
dependabot[bot] Jan 20, 2026
44abf19
Generate markdown docs for Elixir
josevalim Jan 20, 2026
cbe3d72
Warn if default arguments are given in protocol definitions, closes #…
josevalim Jan 22, 2026
b6a0097
Properly track types in lists in pattern matching, closes #15040
josevalim Jan 22, 2026
e87b935
Streamline subpatterns for domain keys and list heads
josevalim Jan 22, 2026
22006fd
Track variables across equality in guards
josevalim Jan 23, 2026
73adf72
Do not leak variables from conditional vars, closes #15074
josevalim Jan 23, 2026
663019d
Clarify tasks are asynchronous on supervisor init
josevalim Jan 24, 2026
47d2b6d
Collapse expressions to improve trace debugging
josevalim Jan 26, 2026
dc7b20f
Track pattern precision
josevalim Jan 26, 2026
d031425
Track guard precision
josevalim Jan 26, 2026
ff13244
Bump actions/checkout from 6.0.1 to 6.0.2 (#15078)
dependabot[bot] Jan 27, 2026
30b59ed
Track types across case clauses (#15080)
josevalim Jan 27, 2026
b381ab3
Add require note to CHANGELOG, closes #15077
josevalim Jan 27, 2026
5093bab
Document GenServer shutdown default
josevalim Jan 28, 2026
ba86beb
Fix "always evaluate" for Logger anonymous function tuples (#15081)
Odaeus Jan 28, 2026
7b22b8e
Add `List.first!/1` and `List.last!/1` (#15082)
pierrelegall Jan 29, 2026
4940d0f
Reduce state tracked in guard info
josevalim Jan 29, 2026
7048f60
Fix spelling typos in docs and comments (#15083)
mudssrali Jan 29, 2026
7fef1c5
Make compiler module purging opt-in
josevalim Jan 31, 2026
c40c140
Postpone deletion of modules to avoid code server bottleneck
josevalim Jan 31, 2026
cebc5a7
Better error message for when all patterns are exhausted
josevalim Feb 1, 2026
3fbe977
Validate Macro.Env struct upfront to avoid failures deep within the c…
josevalim Feb 1, 2026
be34850
Remove incorrect differences in BDD
josevalim Feb 2, 2026
426a429
Fix wrong bdd leaf intersection optimization on equal literals, close…
josevalim Feb 3, 2026
f7b179a
Ensure system_env is applied for Elixir deps, closes #15095
josevalim Feb 5, 2026
0b1d3fc
Improve `Application.get_env/2` docs for dependencies
nabijaczleweli Feb 6, 2026
a536143
Do not propagate parent config when building archives/escripts (#15097)
josevalim Feb 7, 2026
f2e6d6a
Parallelize dep lock status checks during deps.loadpaths (#15099)
naserca Feb 9, 2026
2ab126e
Add another example to `Integer.parse/1` (#15101)
dersmon Feb 12, 2026
d8eed78
Bump azure/trusted-signing-action from 1.0.0 to 1.1.0 (#15103)
dependabot[bot] Feb 16, 2026
52296e0
Improve case error message and improve performance
josevalim Feb 18, 2026
5abcc33
Improve error message and docs for headless clauses, closes #15104
josevalim Feb 18, 2026
f2e61f6
Use system tmp dir for socket copy test, closes #15093
josevalim Feb 18, 2026
ab7c019
Topsort Erlang modules before compilation, closes #15100
josevalim Feb 18, 2026
23633f7
Use IEx.Broker.shell to find nodes instead of group leader, closes #1…
josevalim Feb 18, 2026
85b1ad0
Do not emit warnings during IEx parsing
josevalim Feb 18, 2026
9ba89f4
Properly handle compile attributes in Erlang sources
josevalim Feb 18, 2026
b05fec0
Use evaluation when compiling modules (#15087)
josevalim Feb 19, 2026
13846bd
Fail when misnamed test files are detected and --warnings-as-errors i…
SteffenDE Feb 19, 2026
34fda89
Recompose multiple orelse as Kernel.in for performance, closes #15108
josevalim Feb 20, 2026
38dcc45
Optimise Map.take/2 for empty list of keys (#15110)
hauleth Feb 23, 2026
34a5000
Keep Kernel.in/2 as :lists.member/2 and optimize in type checker and …
josevalim Feb 20, 2026
a0ef7f0
Move struct validation in patterns and updates to type checker
josevalim Feb 23, 2026
4c20342
Include maybe feature
josevalim Feb 23, 2026
7caa954
Compute redundant clauses for receive
josevalim Feb 24, 2026
c903033
Compute redundant clauses for try-catch and try-else
josevalim Feb 24, 2026
565f468
Clean up unused in_body? code branch in in macro impl (#15112)
michallepicki Feb 24, 2026
43dde95
Update ParallelCheker.verify/2 spec (#15113)
michallepicki Feb 24, 2026
6d5f433
Allow specifying SEED when running tests (#15111)
michallepicki Feb 25, 2026
dfe857e
Prevent credential persistence in checkout actions
maennchen Feb 25, 2026
32d20fd
Prevent template injection in GitHub Actions workflows
maennchen Feb 25, 2026
31d62fd
Add cooldown to Dependabot configuration
maennchen Feb 25, 2026
01212ce
Suppress false-positive github-env warnings from zizmor
maennchen Feb 25, 2026
920b7be
Add CodeQL workflow for GitHub Actions security analysis
maennchen Feb 25, 2026
af34af8
Add zizmor workflow audit to CodeQL workflow
maennchen Feb 25, 2026
a71a4e8
Keep credentials for release branch tagging (#15115)
maennchen Feb 25, 2026
4602240
Add Software Bill of Materials guide to the Documentation (#15067)
maennchen Feb 26, 2026
b85d1c8
Print negations whenever most of the descr types are either top or ne…
josevalim Feb 26, 2026
a2a669e
Improve error messages in many Kernel operations
josevalim Feb 26, 2026
2292f3b
Improve docs for Filters in ExUnit (:exclude and :include configurati…
eksperimental Feb 27, 2026
677afec
Improve typespecs for `t:ExUnit.configure_opts/0` (#15117)
eksperimental Feb 27, 2026
7b0ae43
Address ambiguity on type violation in nested ||
josevalim Feb 27, 2026
bac6ef9
Implement redundant clauses for reduce and convert them to warnings
josevalim Feb 27, 2026
aed240b
Warns on redundant clauses from fn
josevalim Feb 27, 2026
1f211d1
Clean up diagnostic formatting on patterns
josevalim Feb 27, 2026
d7865ec
Improve inference for anonymous functions
josevalim Feb 27, 2026
b792fb4
Clarify error message for always failing private function, closes #14401
josevalim Feb 27, 2026
978e404
Update CHANGELOG
josevalim Feb 27, 2026
8cda8e1
Print formatted file names in mix format --verbose (#15119)
georgeguimaraes Feb 28, 2026
132197a
Remove redundant clause triggering warning in tests (#15122)
sabiwara Mar 2, 2026
cd38841
Raise clearer error when reserved word used at the top level of defmo…
sabiwara Mar 2, 2026
0ea809e
Check redundant clauses for definitions (#15124)
josevalim Mar 2, 2026
6e6ed6a
Only return purgeable modules back to pool
josevalim Mar 3, 2026
f7c4047
Keep old functions around so old artifacts still work as expected
josevalim Mar 3, 2026
8e5e626
More docs and warnings around URLs, closes #15125
josevalim Mar 4, 2026
0df45fd
Release v1.20.0-rc.2
josevalim Mar 4, 2026
de4b161
Update comment on square brackets validity in WHATWG
josevalim Mar 4, 2026
77e6687
Handle Kernel.in/2 in type system instead of using rewrite rules, clo…
josevalim Mar 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
25 changes: 25 additions & 0 deletions .formatter.exs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: 2021 The Elixir Team
# SPDX-FileCopyrightText: 2012 Plataformatec

[
inputs: [
"lib/*/{lib,scripts,unicode,test}/**/*.{ex,exs}",
"lib/*/*.exs",
"lib/ex_unit/examples/*.exs",
".formatter.exs"
],
locals_without_parens: [
# Formatter tests
assert_format: 2,
assert_format: 3,
assert_same: 1,
assert_same: 2,

# Errors tests
assert_eval_raise: 3,

# Float tests
float_assert: 1
]
]
6 changes: 6 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1 +1,7 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: 2021 The Elixir Team
# SPDX-FileCopyrightText: 2012 Plataformatec

lib/elixir/test/elixir/fixtures/*.txt text eol=lf
*.ex diff=elixir
*.exs diff=elixir
14 changes: 14 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: 2021 The Elixir Team

---
blank_issues_enabled: true

contact_links:
- name: Ask questions, support, and general discussions
url: https://elixirforum.com/
about: Ask questions, provide support, and more on Elixir Forum

- name: Propose new features
url: https://github.com/elixir-lang/elixir/#proposing-new-features
about: Propose new features in our mailing list
56 changes: 56 additions & 0 deletions .github/ISSUE_TEMPLATE/issue.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: 2021 The Elixir Team

---
name: Report an issue
description:
Tell us about something that is not working the way we (probably) intend
body:
- type: markdown
attributes:
value: >
Thank you for contributing to Elixir! :heart:


Please, do not use this form for guidance, questions or support.
Try instead in [Elixir Forum](https://elixirforum.com),
the [IRC Chat](https://web.libera.chat/#elixir),
[Stack Overflow](https://stackoverflow.com/questions/tagged/elixir),
[Slack](https://elixir-slackin.herokuapp.com),
[Discord](https://discord.gg/elixir) or in other online communities.

- type: textarea
id: elixir-and-otp-version
attributes:
label: Elixir and Erlang/OTP versions
description: Paste the output of `elixir --version` here.
validations:
required: true

- type: input
id: os
attributes:
label: Operating system
description: The operating system that this issue is happening on.
validations:
required: true

- type: textarea
id: current-behavior
attributes:
label: Current behavior
description: >
Include code samples, errors, and stacktraces if appropriate.


If reporting a bug, please include the reproducing steps.
validations:
required: true

- type: textarea
id: expected-behavior
attributes:
label: Expected behavior
description: A short description on how you expect the code to behave.
validations:
required: true
11 changes: 11 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: 2021 The Elixir Team

version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
cooldown:
default-days: 7
157 changes: 157 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: 2021 The Elixir Team
# SPDX-FileCopyrightText: 2012 Plataformatec

name: CI

on:
push:
pull_request:
workflow_dispatch:

env:
ELIXIR_ASSERT_TIMEOUT: 2000
ELIXIRC_OPTS: "--warnings-as-errors"
LANG: C.UTF-8

permissions:
contents: read

jobs:
test_linux:
name: Ubuntu 24.04, OTP ${{ matrix.otp_version }}${{ matrix.deterministic && ' (deterministic)' || '' }}${{ matrix.coverage && ' (coverage)' || '' }}
runs-on: ubuntu-24.04

strategy:
fail-fast: false
matrix:
include:
- otp_version: "28.1"
deterministic: true
- otp_version: "28.1"
erlc_opts: "warnings_as_errors"
docs: true
coverage: true
- otp_version: "27.3"
erlc_opts: "warnings_as_errors"
- otp_version: "27.0"
erlc_opts: "warnings_as_errors"
- otp_version: "26.0"
- otp_version: master
development: true
- otp_version: maint
development: true

# Earlier Erlang/OTP versions ignored compiler directives
# when using warnings_as_errors. So we only set ERLC_OPTS
# from Erlang/OTP 27+.
env:
ERLC_OPTS: ${{ matrix.erlc_opts || '' }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false

- uses: erlef/setup-beam@e6d7c94229049569db56a7ad5a540c051a010af9 # v1.20.4
with:
otp-version: ${{ matrix.otp_version }}

- name: Set ERL_COMPILER_OPTIONS
if: ${{ matrix.deterministic }}
run: echo "ERL_COMPILER_OPTIONS=deterministic" >> $GITHUB_ENV

- name: Compile Elixir
run: |
make compile
echo "$PWD/bin" >> $GITHUB_PATH

- name: Build info
run: bin/elixir --version

- name: Check format
run: make test_formatted && echo "All Elixir source code files are properly formatted."

- name: Erlang test suite
run: make test_erlang
continue-on-error: ${{ matrix.development == true }}

- name: Elixir test suite
run: make test_elixir
continue-on-error: ${{ matrix.development == true }}
env:
COVER: "${{ matrix.coverage }}"

- name: Build docs (ExDoc main)
if: ${{ matrix.docs }}
run: |
cd ..
git clone https://github.com/elixir-lang/ex_doc.git --depth 1
cd ex_doc
../elixir/bin/mix do local.rebar --force + local.hex --force + deps.get + compile
cd ../elixir/
git fetch --tags
DOCS_OPTIONS="--warnings-as-errors" make docs

- name: "Calculate Coverage"
if: ${{ matrix.coverage }}
run: make cover | tee "$GITHUB_STEP_SUMMARY"

- name: "Upload Coverage Artifact"
if: ${{ matrix.coverage }}
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: TestCoverage
path: cover/*

- name: Check reproducible builds
if: ${{ matrix.deterministic }}
run: taskset 1 make check_reproducible

- name: Check git is not required
if: ${{ matrix.deterministic }}
run: |
rm -rf .git
cd lib/elixir
elixirc --ignore-module-conflict -o ebin "lib/**/*.ex"

test_windows:
name: Windows Server 2022, OTP ${{ matrix.otp_version }}
runs-on: windows-2022

strategy:
matrix:
otp_version:
- "28.1"
- "27.3"
- "26.2"

steps:
- name: Configure Git
run: git config --global core.autocrlf input

- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false

- uses: erlef/setup-beam@e6d7c94229049569db56a7ad5a540c051a010af9 # v1.20.4
with:
otp-version: ${{ matrix.otp_version }}

- name: Compile Elixir
run: |
Remove-Item -Recurse -Force '.git'
make compile

- name: Build info
run: bin/elixir --version

- name: Check format
run: make test_formatted && echo "All Elixir source code files are properly formatted."

- name: Erlang test suite
run: make test_erlang

- name: Elixir test suite
run: |
Remove-Item 'c:/Windows/System32/drivers/etc/hosts'
make test_elixir
55 changes: 55 additions & 0 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: 2026 The Elixir Team

name: "CodeQL Advanced"

on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
schedule:
- cron: "29 8 * * 1"

permissions:
contents: read

jobs:
analyze:
name: Analyze (${{ matrix.language }})
runs-on: "ubuntu-latest"
permissions:
security-events: write
strategy:
fail-fast: false
matrix:
include:
- language: actions
build-mode: none
steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Initialize CodeQL
uses: github/codeql-action/init@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4
with:
category: "/language:${{matrix.language}}"

zizmor:
name: Zizmor
runs-on: ubuntu-latest
permissions:
security-events: write
steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Run zizmor
uses: zizmorcore/zizmor-action@0dce2577a4760a2749d8cfb7a84b7d5585ebcb7d # v0.5.0
41 changes: 41 additions & 0 deletions .github/workflows/license_compliance.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: 2021 The Elixir Team

name: License Compliance

on:
push:
pull_request:
workflow_dispatch:

permissions:
contents: read

env:
LANG: C.UTF-8

jobs:
license_compliance:
name: Check License Compliance
runs-on: ubuntu-24.04

steps:
- name: Use HTTPS instead of SSH for Git cloning
id: git-config
shell: bash
run: git config --global url.https://github.com/.insteadOf ssh://git@github.com/

- name: Checkout project
id: checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false

- name: Run OSS Review Toolkit
id: ort
uses: ./.github/workflows/ort
with:
upload-reports: true
fail-on-violation: true
report-formats: "WebApp"
version: "${{ github.sha }}"
Loading