annotate util/gc.lua @ 14229:ce31fdde0ad1 default tip

net.unbound: Simplify conditional
author Kim Alvefur <zash@zash.se>
date Sat, 13 Jun 2026 11:35:18 +0200
parents c9cc84bee17b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12975
d10957394a3c util: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 11431
diff changeset
1 local set = require "prosody.util.set";
10933
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3 local known_options = {
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4 incremental = set.new { "mode", "threshold", "speed", "step_size" };
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5 generational = set.new { "mode", "minor_threshold", "major_threshold" };
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6 };
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7
13928
c9cc84bee17b util.gc: Handle Lua 5.5 way of passing parameters
Kim Alvefur <zash@zash.se>
parents: 12975
diff changeset
8 if _VERSION == "Lua 5.5" then
c9cc84bee17b util.gc: Handle Lua 5.5 way of passing parameters
Kim Alvefur <zash@zash.se>
parents: 12975
diff changeset
9 known_options.generational = set.new { "mode", "minor_multiplier", "minor_major_threshold", "major_minor_threshold" };
c9cc84bee17b util.gc: Handle Lua 5.5 way of passing parameters
Kim Alvefur <zash@zash.se>
parents: 12975
diff changeset
10 elseif _VERSION ~= "Lua 5.4" then
10933
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11 known_options.generational = nil;
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
12 known_options.incremental:remove("step_size");
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
13 end
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
14
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
15 local function configure(user, defaults)
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
16 local mode = user.mode or defaults.mode or "incremental";
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
17 if not known_options[mode] then
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
18 return nil, "GC mode not supported on ".._VERSION..": "..mode;
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
19 end
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
21 for k, v in pairs(user) do
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
22 if not known_options[mode]:contains(k) then
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
23 return nil, "Unknown GC parameter: "..k;
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
24 elseif k ~= "mode" and type(v) ~= "number" then
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
25 return nil, "parameter '"..k.."' should be a number";
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
26 end
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
27 end
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
28
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
29 if mode == "incremental" then
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
30 if _VERSION == "Lua 5.4" then
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
31 collectgarbage(mode,
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
32 user.threshold or defaults.threshold,
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
33 user.speed or defaults.speed,
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
34 user.step_size or defaults.step_size
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
35 );
13928
c9cc84bee17b util.gc: Handle Lua 5.5 way of passing parameters
Kim Alvefur <zash@zash.se>
parents: 12975
diff changeset
36 elseif _VERSION == "Lua 5.5" then
c9cc84bee17b util.gc: Handle Lua 5.5 way of passing parameters
Kim Alvefur <zash@zash.se>
parents: 12975
diff changeset
37 collectgarbage(mode);
c9cc84bee17b util.gc: Handle Lua 5.5 way of passing parameters
Kim Alvefur <zash@zash.se>
parents: 12975
diff changeset
38 collectgarbage("param", "pause", user.threshold or defaults.threshold);
c9cc84bee17b util.gc: Handle Lua 5.5 way of passing parameters
Kim Alvefur <zash@zash.se>
parents: 12975
diff changeset
39 collectgarbage("param", "stepmul", user.speed or defaults.speed);
c9cc84bee17b util.gc: Handle Lua 5.5 way of passing parameters
Kim Alvefur <zash@zash.se>
parents: 12975
diff changeset
40 collectgarbage("param", "stepsize", user.step_size or defaults.step_size);
10933
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
41 else
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
42 collectgarbage("setpause", user.threshold or defaults.threshold);
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
43 collectgarbage("setstepmul", user.speed or defaults.speed);
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
44 end
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
45 elseif mode == "generational" then
13928
c9cc84bee17b util.gc: Handle Lua 5.5 way of passing parameters
Kim Alvefur <zash@zash.se>
parents: 12975
diff changeset
46 if _VERSION == "Lua 5.4" then
c9cc84bee17b util.gc: Handle Lua 5.5 way of passing parameters
Kim Alvefur <zash@zash.se>
parents: 12975
diff changeset
47 collectgarbage(mode,
c9cc84bee17b util.gc: Handle Lua 5.5 way of passing parameters
Kim Alvefur <zash@zash.se>
parents: 12975
diff changeset
48 user.minor_threshold or defaults.minor_threshold,
c9cc84bee17b util.gc: Handle Lua 5.5 way of passing parameters
Kim Alvefur <zash@zash.se>
parents: 12975
diff changeset
49 user.major_threshold or defaults.major_threshold
c9cc84bee17b util.gc: Handle Lua 5.5 way of passing parameters
Kim Alvefur <zash@zash.se>
parents: 12975
diff changeset
50 );
c9cc84bee17b util.gc: Handle Lua 5.5 way of passing parameters
Kim Alvefur <zash@zash.se>
parents: 12975
diff changeset
51 elseif _VERSION == "Lua 5.5" then
c9cc84bee17b util.gc: Handle Lua 5.5 way of passing parameters
Kim Alvefur <zash@zash.se>
parents: 12975
diff changeset
52 collectgarbage(mode);
c9cc84bee17b util.gc: Handle Lua 5.5 way of passing parameters
Kim Alvefur <zash@zash.se>
parents: 12975
diff changeset
53 collectgarbage("param", "minormul", user.minor_multiplier or defaults.minor_multiplier);
c9cc84bee17b util.gc: Handle Lua 5.5 way of passing parameters
Kim Alvefur <zash@zash.se>
parents: 12975
diff changeset
54 collectgarbage("param", "majorminor", user.major_minor_threshold or defaults.major_minor_threshold);
c9cc84bee17b util.gc: Handle Lua 5.5 way of passing parameters
Kim Alvefur <zash@zash.se>
parents: 12975
diff changeset
55 collectgarbage("param", "minormajor", user.minor_major_threshold or defaults.minor_major_threshold);
c9cc84bee17b util.gc: Handle Lua 5.5 way of passing parameters
Kim Alvefur <zash@zash.se>
parents: 12975
diff changeset
56 end
10935
2d57c49bfa12 util.gc: Linter fixes [luacheck]
Matthew Wild <mwild1@gmail.com>
parents: 10933
diff changeset
57 end
10933
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
58 return true;
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
59 end
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
60
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
61 return {
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
62 configure = configure;
f59bc81245b3 util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
63 };