diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 8365182..2cf5590 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -27,7 +27,7 @@
name: release
on:
- create:
+ push:
tags:
- '[0-9]+.[0-9]+.[0-9]+'
diff --git a/Makefile b/Makefile
index 72b28b6..252814a 100644
--- a/Makefile
+++ b/Makefile
@@ -64,6 +64,10 @@ doxy:
grammar:
@for i in `grep "#+html: {{page>.:grammar:" lib/casm-fe/src/various/Grammar.org | sed "s/#+html: {{page>.:grammar:/doc\/language\/grammar\//g" | sed "s/&noheader&nofooter}}/.org/g"`; do if [ ! -f $$i ]; then echo "Documentation of '$$i' is missing!"; fi; done
+ @echo "Grammar Rules"
+ @grep "#+html: {{page>.:grammar:" doc/language/syntax.org | wc -l
+ @echo "Grammar Descriptions"
+ @ls doc/language/grammar/ | wc -l
GITHUB_PATH = $(subst ., $(CONFIG), $(UPDATE_PATH))
diff --git a/app/casmd b/app/casmd
index aa8b0a9..b2d4f5b 160000
--- a/app/casmd
+++ b/app/casmd
@@ -1 +1 @@
-Subproject commit aa8b0a9c69c1bf146792c464939b7e29fe333670
+Subproject commit b2d4f5b31865f343d6cf29de33b9197b56d35b96
diff --git a/app/casmf b/app/casmf
index 1e115fe..5beb829 160000
--- a/app/casmf
+++ b/app/casmf
@@ -1 +1 @@
-Subproject commit 1e115fee7d2ec8110a44295d3eec46db79ff40c2
+Subproject commit 5beb8298fc8fbb9d8a56b442e5cbd8642b0d628e
diff --git a/app/casmi b/app/casmi
index c3d8eb5..e18bebe 160000
--- a/app/casmi
+++ b/app/casmi
@@ -1 +1 @@
-Subproject commit c3d8eb5e3547709bbf48af008d6732bf50849dce
+Subproject commit e18bebec026a27c7c5ac6fdec4ad3c616acf5fb5
diff --git a/doc/language/grammar/AttributedLocalFunctionDefinition.org b/doc/language/grammar/AttributedLocalFunctionDefinition.org
new file mode 100644
index 0000000..700e712
--- /dev/null
+++ b/doc/language/grammar/AttributedLocalFunctionDefinition.org
@@ -0,0 +1,5 @@
+#+options: toc:nil
+
+* AttributedLocalFunctionDefinition
+
+An attributed local function definition which can have optionally =Attributes=.
diff --git a/doc/language/grammar/LocalFunctionDefinition.org b/doc/language/grammar/LocalFunctionDefinition.org
new file mode 100644
index 0000000..302a6c1
--- /dev/null
+++ b/doc/language/grammar/LocalFunctionDefinition.org
@@ -0,0 +1,9 @@
+#+options: toc:nil
+
+* LocalFunctionDefinition
+
+The same as a traditional =FunctionDefinition= without a =function= keyword.
+
+#+html:
+This definition is introduced in version =0.5.0=.
+#+html:
diff --git a/doc/language/grammar/LocalFunctionDefinitions.org b/doc/language/grammar/LocalFunctionDefinitions.org
new file mode 100644
index 0000000..00bf179
--- /dev/null
+++ b/doc/language/grammar/LocalFunctionDefinitions.org
@@ -0,0 +1,5 @@
+#+options: toc:nil
+
+* LocalFunctionDefinitions
+
+LocalFunctionDefinitions consist of one or more attributed =LocalFunctionDefintions=.
diff --git a/doc/language/grammar/LocalRule.org b/doc/language/grammar/LocalRule.org
new file mode 100644
index 0000000..25675ba
--- /dev/null
+++ b/doc/language/grammar/LocalRule.org
@@ -0,0 +1,10 @@
+#+options: toc:nil
+
+* LocalRule
+
+The =local= rule defines a function definition in the current rule scope.
+Therefore, it represents a local state inside a given rule.
+
+#+html:
+This definition is introduced in version =0.5.0=.
+#+html:
diff --git a/doc/language/grammar/UsingPathDefinition.org b/doc/language/grammar/UsingPathDefinition.org
new file mode 100644
index 0000000..3c2f90a
--- /dev/null
+++ b/doc/language/grammar/UsingPathDefinition.org
@@ -0,0 +1,10 @@
+#+options: toc:nil
+
+* UsingPathDefinition
+
+A =using= path definition makes symbols of imported module determined by its =IdentifierPath= visible in the current specification.
+If the symbol path ends with an star (=*=), then all symbols of the specified module path are made visible in the current specification.
+
+#+html:
+This definition is introduced in version =0.5.0=.
+#+html:
diff --git a/doc/release/0.5.0.org b/doc/release/0.5.0.org
new file mode 100644
index 0000000..cf8c04b
--- /dev/null
+++ b/doc/release/0.5.0.org
@@ -0,0 +1,57 @@
+#
+# Copyright (C) 2014-2020 CASM Organization
+# All rights reserved.
+#
+# Developed by: Philipp Paulweber
+# Emmanuel Pescosta
+#
+#
+# This file is part of casm.
+#
+# casm is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# casm is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with casm. If not, see .
+#
+#
+
+#+options: toc:nil
+#+html: {{tag>release}}
+
+*** 0.5.0
+
+#+html:
+[[https://github.com/casm-lang/casm/releases/tag/0.5.0][{{fa>github?lg}}]] April 5, 2020
+
+The release identifier [[http://www.behindthename.com/name/epiktetos][epiktetos]]
+is derived from the Greek name Επικτητος (Epiktetos) and means "newly acquired".
+#+html:
+
+#+html:
+#+html:
+#+html:
+This is the fives official release of the CASM project.
+It introduces two improvements and all are language related.
+The last release introduced a module import concept and we have added a =using= path namespace concept to make symbols visible and shorted their symbol name path.
+Besides the =using= path syntax, we support the =local= rule definition now.
+This rule allows a specifier to defined (nested) local state functions inside given rule scopes.
+
+#+html:
+#+html:
+#+html:
+
+| {{fa>file-alt?lg}} | *Language* | We introduced a new language syntax [[./../syntax#UsingPathDefinition][definition element]] to make module symbols visible under shorter name. |
+| | | |
+| {{fa>file-alt?lg}} | *Language* | Provided support for the [[./../syntax#LocalRule][local rule]] to defined nested local states. |
+| | | |
+
+#+html:
+#+html:
diff --git a/lib/asmjit b/lib/asmjit
index 019811d..0b2e81c 160000
--- a/lib/asmjit
+++ b/lib/asmjit
@@ -1 +1 @@
-Subproject commit 019811d1f0d7a9808a61edffee5d9f22c9986eaa
+Subproject commit 0b2e81ca745b59ed4be15e1e66335bf7e56adcfe
diff --git a/lib/casm-fe b/lib/casm-fe
index d57cdde..5ac70eb 160000
--- a/lib/casm-fe
+++ b/lib/casm-fe
@@ -1 +1 @@
-Subproject commit d57cdded09feeae11959103681f941aa13d37098
+Subproject commit 5ac70eb81c7aa6cdf70145fe588abea171f7cce2
diff --git a/lib/casm-ir b/lib/casm-ir
index c7ba739..a56a030 160000
--- a/lib/casm-ir
+++ b/lib/casm-ir
@@ -1 +1 @@
-Subproject commit c7ba739818ecdf69ef2156e7d6cea1a22de0c983
+Subproject commit a56a0308f87e7ba3d2e938a67a58bd8282b26b0b
diff --git a/lib/casm-rt b/lib/casm-rt
index 0ee9bed..a5baa01 160000
--- a/lib/casm-rt
+++ b/lib/casm-rt
@@ -1 +1 @@
-Subproject commit 0ee9bed7fdf6500c8179650ec0b85e88109719ed
+Subproject commit a5baa01e4c50c2d8c685804aecf68721d2571571
diff --git a/lib/casm-tc b/lib/casm-tc
index a405dd7..f77b063 160000
--- a/lib/casm-tc
+++ b/lib/casm-tc
@@ -1 +1 @@
-Subproject commit a405dd735b09d1d4dd77bba5864cb8fef85fd3f1
+Subproject commit f77b0638882d0c028c73202f223c9548ff076a37
diff --git a/lib/pass b/lib/pass
index 1121c39..2a9cd77 160000
--- a/lib/pass
+++ b/lib/pass
@@ -1 +1 @@
-Subproject commit 1121c395b49de1500dacc82ad6574272a0d01fd5
+Subproject commit 2a9cd771dc8c856f64e2c8aeb6338d7645851ee6
diff --git a/lib/stdhl b/lib/stdhl
index d009afd..a26678e 160000
--- a/lib/stdhl
+++ b/lib/stdhl
@@ -1 +1 @@
-Subproject commit d009afd4812a7cf767c45f85558d17e28476d876
+Subproject commit a26678e7ed02323f9e20a2509682c23d84996a49
diff --git a/lib/tptp b/lib/tptp
index c1ecad0..113a3b0 160000
--- a/lib/tptp
+++ b/lib/tptp
@@ -1 +1 @@
-Subproject commit c1ecad0f0c555364f7e4aa6d6ef157455fb57838
+Subproject commit 113a3b0e90f79b63e315637126c7f6b562e4a21b
diff --git a/lib/z3 b/lib/z3
index e550424..26192e8 160000
--- a/lib/z3
+++ b/lib/z3
@@ -1 +1 @@
-Subproject commit e5504247e9533d10b9a53a842715447a415ac61b
+Subproject commit 26192e848c91cd189fcfb1b68e83371eec9d0462