Skip to content

Commit

Permalink
Drop support for Elixir versions < 1.13 and OTP < 24
Browse files Browse the repository at this point in the history
  • Loading branch information
marcelotto committed Dec 5, 2024
1 parent 33d9a5c commit 68e119c
Show file tree
Hide file tree
Showing 14 changed files with 35 additions and 85 deletions.
6 changes: 1 addition & 5 deletions .github/workflows/elixir-build-and-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,6 @@ jobs:
strategy:
matrix:
include:
- pair:
elixir: 1.13.4
otp: 23.3
build-flags:
- pair:
elixir: 1.14.5
otp: 24.3
Expand All @@ -34,7 +30,7 @@ jobs:
elixir: 1.16.2
otp: 26.2
- pair:
elixir: 1.17.2
elixir: 1.17.3
otp: 27.0
build-flags: --warnings-as-errors
steps:
Expand Down
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ This project adheres to [Semantic Versioning](http://semver.org/) and

## Unreleased

Elixir versions < 1.14 and OTP version < 24 are no longer supported

### Fixed

- Fixed compilation error when defining `RDF.Vocabulary.Namespace`s for large
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.0.2-pre
2.1.0-pre
26 changes: 11 additions & 15 deletions lib/rdf/graph_builder/graph_builder.ex
Original file line number Diff line number Diff line change
Expand Up @@ -275,21 +275,17 @@ defmodule RDF.Graph.Builder do
String.to_atom(short)
end

if Version.match?(System.version(), ">= 1.13.0") do
defp extract_non_strict_ns(block) do
modules =
block
|> Macro.prewalker()
|> Enum.reduce([], fn
{:__aliases__, _, mod}, modules -> [Module.concat(mod) | modules]
_, modules -> modules
end)
|> Enum.uniq()

for module <- modules, non_strict_vocab_namespace?(module), do: module
end
else
defp extract_non_strict_ns(_), do: []
defp extract_non_strict_ns(block) do
modules =
block
|> Macro.prewalker()
|> Enum.reduce([], fn
{:__aliases__, _, mod}, modules -> [Module.concat(mod) | modules]
_, modules -> modules
end)
|> Enum.uniq()

for module <- modules, non_strict_vocab_namespace?(module), do: module
end

defp non_strict_vocab_namespace?(mod) do
Expand Down
13 changes: 3 additions & 10 deletions lib/rdf/model/dataset.ex
Original file line number Diff line number Diff line change
Expand Up @@ -1236,16 +1236,9 @@ defmodule RDF.Dataset do
def member?(dataset, statement), do: {:ok, Dataset.include?(dataset, statement)}
def count(dataset), do: {:ok, Dataset.statement_count(dataset)}

if Version.match?(System.version(), ">= 1.14.0") do
def slice(dataset) do
size = Dataset.statement_count(dataset)
{:ok, size, &Dataset.statements/1}
end
else
def slice(dataset) do
size = Dataset.statement_count(dataset)
{:ok, size, &Enumerable.List.slice(Dataset.statements(dataset), &1, &2, size)}
end
def slice(dataset) do
size = Dataset.statement_count(dataset)
{:ok, size, &Dataset.statements/1}
end

def reduce(dataset, acc, fun) do
Expand Down
13 changes: 3 additions & 10 deletions lib/rdf/model/description.ex
Original file line number Diff line number Diff line change
Expand Up @@ -1075,16 +1075,9 @@ defmodule RDF.Description do

def count(desc), do: {:ok, Description.statement_count(desc)}

if Version.match?(System.version(), ">= 1.14.0") do
def slice(desc) do
size = Description.statement_count(desc)
{:ok, size, &Description.triples/1}
end
else
def slice(desc) do
size = Description.statement_count(desc)
{:ok, size, &Enumerable.List.slice(Description.triples(desc), &1, &2, size)}
end
def slice(desc) do
size = Description.statement_count(desc)
{:ok, size, &Description.triples/1}
end

def reduce(desc, acc, fun) do
Expand Down
13 changes: 3 additions & 10 deletions lib/rdf/model/graph.ex
Original file line number Diff line number Diff line change
Expand Up @@ -1573,16 +1573,9 @@ defmodule RDF.Graph do
def member?(graph, triple), do: {:ok, Graph.include?(graph, triple)}
def count(graph), do: {:ok, Graph.statement_count(graph)}

if Version.match?(System.version(), ">= 1.14.0") do
def slice(graph) do
size = Graph.statement_count(graph)
{:ok, size, &Graph.triples/1}
end
else
def slice(graph) do
size = Graph.statement_count(graph)
{:ok, size, &Enumerable.List.slice(Graph.triples(graph), &1, &2, size)}
end
def slice(graph) do
size = Graph.statement_count(graph)
{:ok, size, &Graph.triples/1}
end

def reduce(graph, acc, fun) do
Expand Down
10 changes: 3 additions & 7 deletions lib/rdf/model/prefix_map.ex
Original file line number Diff line number Diff line change
Expand Up @@ -593,13 +593,9 @@ defmodule RDF.PrefixMap do
def member?(%RDF.PrefixMap{map: map}, mapping), do: Enumerable.member?(map, mapping)
def count(%RDF.PrefixMap{map: map}), do: Enumerable.count(map)

if Version.match?(System.version(), ">= 1.14.0") do
def slice(%RDF.PrefixMap{map: map}) do
size = map_size(map)
{:ok, size, &RDF.PrefixMap.to_list/1}
end
else
def slice(%RDF.PrefixMap{map: map}), do: Enumerable.slice(map)
def slice(%RDF.PrefixMap{map: map}) do
size = map_size(map)
{:ok, size, &RDF.PrefixMap.to_list/1}
end
end

Expand Down
10 changes: 3 additions & 7 deletions lib/rdf/model/property_map.ex
Original file line number Diff line number Diff line change
Expand Up @@ -373,13 +373,9 @@ defmodule RDF.PropertyMap do
def member?(%PropertyMap{iris: iris}, mapping), do: Enumerable.member?(iris, mapping)
def count(%PropertyMap{iris: iris}), do: Enumerable.count(iris)

if Version.match?(System.version(), ">= 1.14.0") do
def slice(%PropertyMap{iris: iris}) do
size = map_size(iris)
{:ok, size, &PropertyMap.to_list/1}
end
else
def slice(%PropertyMap{iris: iris}), do: Enumerable.slice(iris)
def slice(%PropertyMap{iris: iris}) do
size = map_size(iris)
{:ok, size, &PropertyMap.to_list/1}
end
end

Expand Down
8 changes: 1 addition & 7 deletions lib/rdf/namespace/namespace.ex
Original file line number Diff line number Diff line change
Expand Up @@ -57,13 +57,7 @@ defmodule RDF.Namespace do
"""
defmacro defnamespace(module, term_mapping, opts \\ []) do
env =
if Version.match?(System.version(), ">= 1.14.0") do
Macro.Env.prune_compile_info(__CALLER__)
else
__CALLER__
end

env = Macro.Env.prune_compile_info(__CALLER__)
module = fully_qualified_module(module, env)

quote do
Expand Down
2 changes: 1 addition & 1 deletion lib/rdf/serialization/reader.ex
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ defmodule RDF.Serialization.Reader do
alias RDF.{Serialization, Dataset, Graph}

@default_file_mode ~w[read utf8]a
@io_read_mode if Version.match?(System.version(), ">= 1.13.0"), do: :eof, else: :all
@io_read_mode :eof

@spec read_string(module, String.t(), keyword) :: {:ok, Graph.t() | Dataset.t()} | {:error, any}
def read_string(decoder, content, opts \\ []) do
Expand Down
2 changes: 1 addition & 1 deletion mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ defmodule RDF.Mixfile do
[
app: :rdf,
version: @version,
elixir: "~> 1.13",
elixir: "~> 1.14",
build_embedded: Mix.env() == :prod,
start_permanent: Mix.env() == :prod,
deps: deps(),
Expand Down
6 changes: 1 addition & 5 deletions test/unit/model/literal_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,7 @@ defmodule RDF.LiteralTest do
alias RDF.Literal.{Generic, Datatype}
alias Decimal, as: D

# Elixir 1.14 changed the order of inspect strings of structs, so,
# the literals in error strings
if Version.match?(System.version(), ">= 1.14.0") do
doctest RDF.Literal
end
doctest RDF.Literal

alias RDF.NS

Expand Down
7 changes: 1 addition & 6 deletions test/unit/xsd/datatypes/decimal_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -106,12 +106,7 @@ defmodule RDF.XSD.DecimalTest do
assert XSD.double(3.14) |> XSD.Decimal.cast() == XSD.decimal(3.14)
assert XSD.double(10.1e1) |> XSD.Decimal.cast() == XSD.decimal(101.0)

if String.to_integer(System.otp_release()) >= 24 do
assert XSD.double("-0.0") |> XSD.Decimal.cast() == XSD.decimal("-0.0")
else
# This is actual wrong, but we won't fix this wrong behaviour in older Elixir versions
assert XSD.double("-0.0") |> XSD.Decimal.cast() == XSD.decimal("0.0")
end
assert XSD.double("-0.0") |> XSD.Decimal.cast() == XSD.decimal("-0.0")

assert XSD.double("NAN") |> XSD.Decimal.cast() == nil
assert XSD.double("+INF") |> XSD.Decimal.cast() == nil
Expand Down

0 comments on commit 68e119c

Please sign in to comment.