Skip to content

Commit 9ebac92

Browse files
committed
Merge pull request #1278 from petermm/ex_process_send
Process.ex send/2 send_after/3 and /4 cancel_timer/1 send_after is stubbed for /4 and abs option is ignored. Believe those are related to time warping. See https://hexdocs.pm/elixir/1.17.3/Process.html#send_after/4 These changes are made under both the "Apache 2.0" and the "GNU Lesser General Public License 2.1 or later" license terms (dual license). SPDX-License-Identifier: Apache-2.0 OR LGPL-2.1-or-later
2 parents db9da3a + fbd2f74 commit 9ebac92

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ also non string parameters (e.g. `Enum.join([1, 2], ",")`
2020
`Enum.filter`, `Enum.flat_map`, `Enum.reject`, `Enum.chunk_by` and `Enum.chunk_while`
2121
- Support for `maps:merge_with/3`
2222
- Support for `lists:last/1` and `lists:mapfoldl/3`
23+
- Add support to Elixir for `Process.send/2` `Process.send_after/3/4` and `Process.cancel_timer/1`
2324

2425
### Changed
2526

libs/exavmlib/lib/Process.ex

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,20 @@ defmodule Process do
146146
receive after: (timeout -> :ok)
147147
end
148148

149+
@spec send(dest, msg) :: :ok | :noconnect | :nosuspend
150+
when dest: dest(),
151+
msg: any
152+
defdelegate send(dest, msg), to: :erlang
153+
154+
@spec send_after(pid | atom, term, non_neg_integer, [option]) :: reference
155+
when option: {:abs, boolean}
156+
def send_after(dest, msg, time, _opts \\ []) do
157+
:erlang.send_after(time, dest, msg)
158+
end
159+
160+
@spec cancel_timer(reference) :: non_neg_integer | false | :ok
161+
defdelegate cancel_timer(timer_ref), to: :erlang
162+
149163
@type spawn_opt ::
150164
:link
151165
| :monitor

0 commit comments

Comments
 (0)