diff --git a/.ikc3_history b/.ikc3_history
index e294218..458c8c6 100644
--- a/.ikc3_history
+++ b/.ikc3_history
@@ -1,56 +1,3 @@
-exit()
-Map.put(%{}, :a, 1)
-Struct.put(%KC3.Operator{}, :sym, :plop)
-type(%KC3.Operator{})
-Struct.put(%KC3.Operator{}, :sym, :plop)
-Crypt.hash_password("Plop")
-hash = Crypt.hash_password("Plop")
-Crypt.check_password("Plop", hash)
-Crypt.check_password("plop", hash)
-hash = Crypt.hash_password("Plop")
-Crypt.check_password("plop", hash)
-hash = Crypt.hash_password("Plop")
-Crypt.check_password("plop", hash)
-Crypt.check_password("Plop", hash)
-Crypt.sha512("Plop", "$6$rounds=12345$")
-Crypt.sha512("Plop", "$6$rounds=12345$abcde")
-Crypt.sha512("Plop", "$6$rounds=12345$abcd")
-Crypt.sha512("Plop", "$6$rounds=12345$abc0123456789$")
-Crypt.sha512("Plop", "$6$rounds=1234$abc0123456789$")
-Crypt.sha512("Plop", "$6$")
-152 - 37
-Crypt.sha512("Plop", "$6$")
-Crypt.sha512("Plop", "$6$rounds=1234$abc0123456789$")
-hash = Crypt.sha512("Plop", "$6$rounds=1234$abc0123456789$")
-hash2 = Crypt.sha512("Plop", hash)
-hash == hash2
-hash = Crypt.sha512("Plop", "$6$rounds=1234$abc0123456789$")
-h2 = Crypt.sha512("Plop", hash)
-h2 = Crypt.sha512("Plop2", hash)
-Crypt.sha512_hash_password("Plop")
-Str.random_base64(1)
-Str.random_base64(2)
-Str.size(Str.random_base64(2))
-Str.size(Str.random_base64(1))
-Crypt.sha512_hash_password("Plop")
-Str.random_base64(64)
-Crypt.sha512_hash_password("Plop")
-Crypt.sha512("Plop", "$6$rounds=1234567$abc0123456789$")
-Crypt.sha512("Plop", "$6$rounds=123456$abc0123456789$")
-Crypt.sha512_hash_password("Plop")
-quote if trrue
-quote if true do if false do 1 else %KC3.Operator{sym: :-, symbol_value: 3} end end
-Crypt.sha512("Plop", "$6$rounds=123456$abc0123456789$")
-1 + 1
-1 + 10000000000000000000000000000000000000000000
-Time.from_str("1970-01-01 00:00:00")
-Time.from_str("2024-10-31 23:00:00")
-Time.to_str(Time.from_str("2024-10-31 23:00:00"))
-List.map([1, 2, 3], fn (x) { x * 2 })
-Facts.collect_with(Facts.env_db(), [[op = ?, :is_a, :operator]], fn (fact) { op })
-1 + 1
-123
-type(123)
type(1234)
type(12345)
type(123456)
@@ -97,3 +44,56 @@ points[2]
"#{(F128) 0.0}"
"#{(F128) 0.1}"
List.map([1, 2, 3], fn (x) { x * 8 })
+1 + 1
+1 + 1000000000000000000000000000000000000000000000000000000000
+type(1 + 1000000000000000000000000000000000000000000000000)
+type(1 + 1)
+type(255)
+type(256)
+type(255 + 1)
+F128.pi
+F128.cos(2 * F128.pi)
+F128
+type(F128)
+:F128
+type(:F128)
+:F128 == F128
+F128.cos
+(F128) 0.1 + (F128) 0.1
+(F128) 0.01 + (F128) 0.01
+(F64) 0.01 + (F64) 0.01
+(F64) 0.001 + (F64) 0.001
+(F64) 0.0001 + (F64) 0.0001
+(F64) 0.00001 + (F64) 0.00001
+(F64) 0.000001 + (F64) 0.000001
+(F64) 0.000002 + (F64) 0.000002
+(F64) 0.0000002 + (F64) 0.0000002
+(F64) 0.0000001 + (F64) 0.0000001
+(F64) 0.000001 + (F64) 0.000003
+(F64) 0.3 + (F64) 0.3
+type(0.1)
+0.1 + 0.1
+0.01 + 0.01
+1 / 3
+1.0 / 3.0
+1 mod 3
+1/3
+(F64) 1.0 / (F64) 3.0
+1/3
+1/3 * 2
+1/3 * 2 * 3
+(Integer) (1/3 * 2 * 3)
+type((Integer) (1/3 * 2 * 3))
+type((U8) (1/3 * 2 * 3))
+(U8) (1/3 * 2 * 3)
+"abc" + "def"
+"abc#{123}" + "def"
+"abc#{123 + 456}" + "def"
+"abc#{(Uw) 123 + 456}" + "def"
+(Uw) 123 + 456
+(Uw) (123 + 456)
+"abc#{(Uw) (123 + 456)}" + "def"
+quote if true do %{plop: 123, hop: 456} end
+pid
+pid()
+man getpid
diff --git a/lib/kc3/0.1/kc3.facts b/lib/kc3/0.1/kc3.facts
index c0b5dd2..0fb1ecc 100644
--- a/lib/kc3/0.1/kc3.facts
+++ b/lib/kc3/0.1/kc3.facts
@@ -375,3 +375,9 @@ add {KC3, :symbol, KC3.args}
replace {KC3.args, :symbol_value, cfn List "kc3_args" (Result)}
add {KC3, :symbol, KC3.stacktrace}
replace {KC3.stacktrace, :symbol_value, cfn List "kc3_stacktrace" (Result)}
+add {KC3, :symbol, KC3.pause}
+replace {KC3.pause, :symbol_value, cfn S32 "pause" ()}
+add {KC3, :symbol, KC3.getpid}
+replace {KC3.getpid, :symbol_value, cfn Sw "kc3_getpid" ()}
+add {KC3, :symbol, KC3.getppid}
+replace {KC3.getppid, :symbol_value, cfn Sw "kc3_getppid" ()}
diff --git a/libkc3/kc3.c b/libkc3/kc3.c
index 9f1b063..7b1b27a 100644
--- a/libkc3/kc3.c
+++ b/libkc3/kc3.c
@@ -380,6 +380,16 @@ s_str * kc3_getenv (const s_str *name, s_str *dest)
return str_init_1(dest, NULL, p);
}
+sw kc3_getpid (void)
+{
+ return getpid();
+}
+
+sw kc3_getppid (void)
+{
+ return getppid();
+}
+
s_tag * kc3_identity (s_tag *tag, s_tag *dest)
{
return tag_init_copy(dest, tag);
diff --git a/libkc3/kc3_main.h b/libkc3/kc3_main.h
index 835490a..ec76097 100644
--- a/libkc3/kc3_main.h
+++ b/libkc3/kc3_main.h
@@ -45,6 +45,8 @@ s_tag * kc3_facts_first_with_tags (s_facts *facts,
s_tag *dest);
uw * kc3_facts_next_id (uw *dest);
s_str * kc3_getenv (const s_str *name, s_str *dest);
+sw kc3_getpid (void);
+sw kc3_getppid (void);
void kc3_license (void);
const s_sym ** kc3_module (const s_sym **dest);
uw * kc3_offsetof (const s_sym * const *module,