AssayFluxScientificSystems 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- assayfluxscientificsystems-0.1.0/CHANGELOG.md +14 -0
- assayfluxscientificsystems-0.1.0/LICENSE +19 -0
- assayfluxscientificsystems-0.1.0/MANIFEST.in +10 -0
- assayfluxscientificsystems-0.1.0/PKG-INFO +126 -0
- assayfluxscientificsystems-0.1.0/README.md +92 -0
- assayfluxscientificsystems-0.1.0/docs/ARCHITECTURE.md +20 -0
- assayfluxscientificsystems-0.1.0/docs/FEATURE_MATRIX.md +25 -0
- assayfluxscientificsystems-0.1.0/docs/GRAMMAR_PRESERVATION_NOTE.md +5 -0
- assayfluxscientificsystems-0.1.0/docs/LANGUAGE_SPECIFICATION.md +32 -0
- assayfluxscientificsystems-0.1.0/docs/PROJECT_MERGE_AUDIT.md +11 -0
- assayfluxscientificsystems-0.1.0/docs/ROADMAP.md +32 -0
- assayfluxscientificsystems-0.1.0/docs/SECURITY_MODEL.md +33 -0
- assayfluxscientificsystems-0.1.0/docs/SYNTAX_REFERENCE.md +98 -0
- assayfluxscientificsystems-0.1.0/docs/VERIFICATION_REPORT.md +41 -0
- assayfluxscientificsystems-0.1.0/docs/grammar.md +1888 -0
- assayfluxscientificsystems-0.1.0/editor/assayflux.tmLanguage.json +17 -0
- assayfluxscientificsystems-0.1.0/examples/conditions.assayflux +11 -0
- assayfluxscientificsystems-0.1.0/examples/hello.assayflux +5 -0
- assayfluxscientificsystems-0.1.0/examples/native.cpp +6 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/.github/workflows/publish.yml +36 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/.github/workflows/tests.yml +22 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/.gitignore +9 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/MANIFEST.in +11 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/README.md +181 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/RELEASE_NOTES_0.1.0.md +13 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/RELEASE_NOTES_0.1.1.md +11 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/RELEASE_NOTES_0.1.1_UPGRADED.md +16 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/RELEASE_NOTES_0.5.0.md +26 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/RELEASE_NOTES_0.6.0.md +9 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/RELEASE_NOTES_0.7.0.md +16 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/RELEASE_NOTES_0.8.0.md +13 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/SHA256SUMS_0.1.1_UPGRADED.txt +2 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/VERIFICATION_0.1.1.txt +20 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/VERIFICATION_0.1.1_UPGRADED.txt +15 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/docs/ARCHITECTURE.md +12 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/docs/GOOGLE_COLAB_ANDROID.md +105 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/docs/PUBLISHING_CHECKLIST.md +20 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/docs/ROADMAP.md +21 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/docs/RUNTIME_SETUP.md +31 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/docs/VERIFICATION_MATRIX_0.1.1_UPGRADED.md +24 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/docs/VERIFICATION_MATRIX_0.8.0.md +24 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/docs/WEB_TO_ANDROID.md +35 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/pyproject.toml +52 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/scripts/setup_colab_android.sh +20 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/scripts/termux_install.sh +9 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/src/assayflux/__init__.py +5 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/src/assayflux/__main__.py +2 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/src/assayflux/builder.py +196 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/src/assayflux/cli.py +167 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/src/assayflux/doctor.py +19 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/src/assayflux/engines/__init__.py +23 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/src/assayflux/engines/base.py +29 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/src/assayflux/errors.py +11 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/src/assayflux/generator.py +343 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/src/assayflux/learn.py +19 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/src/assayflux/planner.py +8 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/src/assayflux/project.py +43 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/src/assayflux/registry.py +87 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/src/assayflux/relay.py +26 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/src/assayflux/runtimes.py +196 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/src/assayflux/tasks.py +112 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/src/assayflux/validation.py +22 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/tests/test_cli.py +65 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/tests/test_project.py +232 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/tests/test_registry_tasks_learn.py +108 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-Professional/tests/test_runtimes.py +51 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/.gitignore +185 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/DOCS/ARCHITECTURE.md +543 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/DOCS/DICTIONARY.md +735 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/DOCS/GRAMMAR.md +1888 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/DOCS/LANGUAGE_SPECIFICATION.md +319 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/DOCS/SPECIFICATION_STATUS.md +95 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/README.md +1762 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/SECURITY.md +16 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/assayflux/__init__.py +20 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/assayflux/__main__.py +42 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/assayflux/ast_nodes.py +671 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/assayflux/cli.py +47 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/assayflux/generator/__init__.py +23 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/assayflux/generator/base.py +42 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/assayflux/generator/css_generator.py +291 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/assayflux/generator/html_generator.py +246 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/assayflux/generator/js_generator.py +87 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/assayflux/generator/project_builder.py +226 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/assayflux/generator/python_generator.py +154 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/assayflux/generator/sql_generator.py +275 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/assayflux/interop/__init__.py +21 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/assayflux/interop/adapters/master_adapter.py +926 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/assayflux/interop/adapters/universal_adapter.py +177 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/assayflux/interop/base.py +169 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/assayflux/interop/loader.py +142 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/assayflux/interop/registry.py +100 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/assayflux/interop/runtime.py +155 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/assayflux/interpreter.py +1008 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/assayflux/lexer.py +1640 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/assayflux/parser.py +1428 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/assayflux/validator.py +544 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/assayflux-logo.png +0 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/examples/universal.af +658 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/pyproject.toml +172 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFlux-main/tests/test_master.py +818 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFluxOS/ANDROID_ROADMAP.md +18 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFluxOS/README.md +170 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFluxOS/RELEASE_CHECKLIST.md +20 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFluxOS/android/README.md +12 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFluxOS/docs/FLUXSCRIPT_REFERENCE.md +54 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFluxOS/pyproject.toml +39 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFluxOS/src/assayfluxos/__init__.py +2 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFluxOS/src/assayfluxos/cli.py +13 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFluxOS/src/assayfluxos/config.py +24 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFluxOS/src/assayfluxos/filesystem.py +131 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFluxOS/src/assayfluxos/language.py +179 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFluxOS/src/assayfluxos/plugins.py +42 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFluxOS/src/assayfluxos/shell.py +310 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFluxOS/tests/test_filesystem.py +18 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFluxOS/tests/test_language.py +19 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFluxOS/tests/test_shell.py +21 -0
- assayfluxscientificsystems-0.1.0/legacy_sources/AssayFluxOS/tools/assayflux_preflight.py +25 -0
- assayfluxscientificsystems-0.1.0/notebooks/AssayFlux_Scientific_Systems_PyPI_Publish.ipynb +205 -0
- assayfluxscientificsystems-0.1.0/pyproject.toml +50 -0
- assayfluxscientificsystems-0.1.0/scripts/termux_install.sh +6 -0
- assayfluxscientificsystems-0.1.0/setup.cfg +4 -0
- assayfluxscientificsystems-0.1.0/src/AssayFluxScientificSystems.egg-info/PKG-INFO +126 -0
- assayfluxscientificsystems-0.1.0/src/AssayFluxScientificSystems.egg-info/SOURCES.txt +154 -0
- assayfluxscientificsystems-0.1.0/src/AssayFluxScientificSystems.egg-info/dependency_links.txt +1 -0
- assayfluxscientificsystems-0.1.0/src/AssayFluxScientificSystems.egg-info/entry_points.txt +5 -0
- assayfluxscientificsystems-0.1.0/src/AssayFluxScientificSystems.egg-info/requires.txt +13 -0
- assayfluxscientificsystems-0.1.0/src/AssayFluxScientificSystems.egg-info/top_level.txt +1 -0
- assayfluxscientificsystems-0.1.0/src/assayflux/__init__.py +6 -0
- assayfluxscientificsystems-0.1.0/src/assayflux/__main__.py +2 -0
- assayfluxscientificsystems-0.1.0/src/assayflux/cli.py +268 -0
- assayfluxscientificsystems-0.1.0/src/assayflux/developer/__init__.py +1 -0
- assayfluxscientificsystems-0.1.0/src/assayflux/developer/doctor.py +19 -0
- assayfluxscientificsystems-0.1.0/src/assayflux/diagnostics/__init__.py +2 -0
- assayfluxscientificsystems-0.1.0/src/assayflux/diagnostics/model.py +61 -0
- assayfluxscientificsystems-0.1.0/src/assayflux/diagnostics/reporter.py +60 -0
- assayfluxscientificsystems-0.1.0/src/assayflux/language/ast_nodes.py +36 -0
- assayfluxscientificsystems-0.1.0/src/assayflux/language/ast_validator.py +30 -0
- assayfluxscientificsystems-0.1.0/src/assayflux/language/grammar.lark +43 -0
- assayfluxscientificsystems-0.1.0/src/assayflux/language/parser.py +95 -0
- assayfluxscientificsystems-0.1.0/src/assayflux/language/semantic.py +67 -0
- assayfluxscientificsystems-0.1.0/src/assayflux/runtime/__init__.py +4 -0
- assayfluxscientificsystems-0.1.0/src/assayflux/runtime/interpreter.py +119 -0
- assayfluxscientificsystems-0.1.0/src/assayflux/runtime/native_build.py +74 -0
- assayfluxscientificsystems-0.1.0/src/assayflux/runtime/python_bridge.py +84 -0
- assayfluxscientificsystems-0.1.0/src/assayflux/runtime/sqlite_runtime.py +89 -0
- assayfluxscientificsystems-0.1.0/src/assayflux/security/__init__.py +3 -0
- assayfluxscientificsystems-0.1.0/src/assayflux/security/capabilities.py +28 -0
- assayfluxscientificsystems-0.1.0/src/assayflux/security/checkpoints.py +65 -0
- assayfluxscientificsystems-0.1.0/templates/android/README.md +11 -0
- assayfluxscientificsystems-0.1.0/tests/test_cli.py +24 -0
- assayfluxscientificsystems-0.1.0/tests/test_diagnostics.py +24 -0
- assayfluxscientificsystems-0.1.0/tests/test_language.py +66 -0
- assayfluxscientificsystems-0.1.0/tests/test_native_build.py +24 -0
- assayfluxscientificsystems-0.1.0/tests/test_parser_corpus.py +19 -0
- assayfluxscientificsystems-0.1.0/tests/test_security.py +61 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.1.0 — unified alpha
|
|
4
|
+
|
|
5
|
+
- Consolidated the language/runtime foundation, diagnostics, security policy, C++ build helper, and retained original project sources.
|
|
6
|
+
- Standardized distribution identity to **AssayFlux Scientific Systems** (`AssayFluxScientificSystems`) while retaining the `assayflux` Python import.
|
|
7
|
+
- Added the `pycall` language expression with explicit capabilities and a curated Python callable allowlist (`math`, `statistics`, `json`, optional `numpy`).
|
|
8
|
+
- Added `assayflux syntax` language reference command and a complete implemented-subset syntax document.
|
|
9
|
+
- Added starter project creation and initial AssayFluxOS roadmap/info commands.
|
|
10
|
+
- Added Gradle wrapper generation and Android Gradle build commands.
|
|
11
|
+
- Added optional `science` dependencies and a PyPI token upload notebook.
|
|
12
|
+
- Preserved the original historical `docs/grammar.md` byte-for-byte.
|
|
13
|
+
|
|
14
|
+
This is an alpha foundation. See the verification report for features that remain incomplete or unverified.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
Copyright (c) 2026 Md Safarujjaman / AssayFlux
|
|
2
|
+
|
|
3
|
+
MIT License
|
|
4
|
+
|
|
5
|
+
Copyright (c) 2026 AssayFlux contributors
|
|
6
|
+
|
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
8
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
9
|
+
in the Software without restriction, including without limitation the rights
|
|
10
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
11
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
12
|
+
furnished to do so, subject to the following conditions:
|
|
13
|
+
|
|
14
|
+
The above copyright notice and this permission notice shall be included in all
|
|
15
|
+
copies or substantial portions of the Software.
|
|
16
|
+
|
|
17
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
18
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
19
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
include README.md LICENSE CHANGELOG.md
|
|
2
|
+
recursive-include docs *.md
|
|
3
|
+
recursive-include examples *.assayflux *.cpp
|
|
4
|
+
recursive-include editor *.json
|
|
5
|
+
recursive-include tests *.py
|
|
6
|
+
recursive-include scripts *.sh
|
|
7
|
+
recursive-include legacy_sources *.py *.md *.toml *.txt *.sh *.af *.png *.yml *.in *.gitignore
|
|
8
|
+
|
|
9
|
+
recursive-include templates *
|
|
10
|
+
recursive-include notebooks *.ipynb
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: AssayFluxScientificSystems
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: AssayFlux Scientific Systems: language runtime, scientific Python bridge, project builder, and OS development tools
|
|
5
|
+
Author-email: Md Safarujjaman <assayflux@gmail.com>
|
|
6
|
+
Maintainer-email: AssayFlux / Md Safarujjaman <mdsafarujjaman@assayflux.com>
|
|
7
|
+
License-Expression: MIT
|
|
8
|
+
Project-URL: Homepage, https://www.assayflux.com
|
|
9
|
+
Project-URL: Documentation, https://www.assayflux.com
|
|
10
|
+
Keywords: assayflux,scientific-computing,programming-language,interpreter,project-builder,assayfluxos,android,termux
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Operating System :: OS Independent
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Topic :: Software Development :: Interpreters
|
|
19
|
+
Requires-Python: >=3.11
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
License-File: LICENSE
|
|
22
|
+
Requires-Dist: lark<2,>=1.1.9
|
|
23
|
+
Provides-Extra: dev
|
|
24
|
+
Requires-Dist: pytest>=8; extra == "dev"
|
|
25
|
+
Requires-Dist: build>=1.2; extra == "dev"
|
|
26
|
+
Requires-Dist: ruff>=0.6; extra == "dev"
|
|
27
|
+
Requires-Dist: twine>=5; extra == "dev"
|
|
28
|
+
Provides-Extra: science
|
|
29
|
+
Requires-Dist: numpy>=1.26; extra == "science"
|
|
30
|
+
Requires-Dist: scipy>=1.11; extra == "science"
|
|
31
|
+
Requires-Dist: pandas>=2.1; extra == "science"
|
|
32
|
+
Requires-Dist: matplotlib>=3.8; extra == "science"
|
|
33
|
+
Dynamic: license-file
|
|
34
|
+
|
|
35
|
+
# AssayFlux Scientific Systems
|
|
36
|
+
|
|
37
|
+
**Version 0.1.0 · Alpha · Created by Md Safarujjaman · AssayFlux**
|
|
38
|
+
|
|
39
|
+
AssayFlux Scientific Systems is the umbrella Python distribution for the AssayFlux language/runtime, diagnostics and security checkpoints, scientific Python bridge, project starter builder, native C++ build helper, and early AssayFluxOS development utilities.
|
|
40
|
+
|
|
41
|
+
- **Author:** Md Safarujjaman
|
|
42
|
+
- **Organization/project:** AssayFlux
|
|
43
|
+
- **Email:** `assayflux@gmail.com`
|
|
44
|
+
- **Project contact:** `mdsafarujjaman@assayflux.com`
|
|
45
|
+
- **Website:** https://www.assayflux.com
|
|
46
|
+
- **PyPI distribution:** `AssayFluxScientificSystems` (the normalized package name; display name is “AssayFlux Scientific Systems”)
|
|
47
|
+
- **Python import:** `assayflux`
|
|
48
|
+
- **Version:** `0.1.0`
|
|
49
|
+
- **Python:** 3.11+
|
|
50
|
+
|
|
51
|
+
## Install
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
python -m pip install AssayFluxScientificSystems
|
|
55
|
+
assayflux --version
|
|
56
|
+
assayflux doctor
|
|
57
|
+
assayflux setup --science # optional, after this version is published
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Pip automatically installs declared Python dependencies (currently Lark). Optional scientific packages can be installed with:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
python -m pip install 'AssayFluxScientificSystems[science]'
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
The `science` extra installs NumPy, SciPy, pandas, and Matplotlib. These are optional because they are comparatively large and not needed for the core language. Java/JDK, Android SDK, C++ compiler, Git, Node.js, and Gradle are external system tools and are not silently installed by pip. `assayflux doctor` reports their availability.
|
|
67
|
+
|
|
68
|
+
## Quick start
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
assayflux check examples/hello.assayflux
|
|
72
|
+
assayflux run examples/hello.assayflux
|
|
73
|
+
assayflux syntax
|
|
74
|
+
assayflux syntax python
|
|
75
|
+
assayflux project create ./MyProject --name 'My Project'
|
|
76
|
+
assayflux os info
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Python bridge example:
|
|
80
|
+
|
|
81
|
+
```assayflux
|
|
82
|
+
let root = pycall("math", "sqrt", 81)
|
|
83
|
+
print(root)
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Enable the capability explicitly:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
assayflux run main.assayflux --allow-python --python-modules math
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
The currently supported bridge modules are `math`, `statistics`, `json`, and optional `numpy`, `pandas`, and `scipy.stats`. Only allowlisted functions and primitive-compatible values cross the boundary. Python interoperability executes in the host process and is **not a sandbox**; use only with trusted source and trusted modules.
|
|
93
|
+
|
|
94
|
+
## CLI commands
|
|
95
|
+
|
|
96
|
+
- `assayflux check FILE` — parse and perform static checks without execution.
|
|
97
|
+
- `assayflux run FILE` — interpret source with execution budgets.
|
|
98
|
+
- `assayflux syntax [topic]` — display implemented syntax and examples.
|
|
99
|
+
- `assayflux doctor` — report Python and optional external-tool availability.
|
|
100
|
+
- `assayflux setup --science` — download optional scientific Python dependencies (requires this release to be available from PyPI).
|
|
101
|
+
- `assayflux setup --dev` — download test/build tools (requires this release to be available from PyPI).
|
|
102
|
+
- `assayflux report list|show|export` — inspect local diagnostic reports.
|
|
103
|
+
- `assayflux project create PATH --name NAME` — create a starter project.
|
|
104
|
+
- `assayflux os info|roadmap` — explain the current AssayFluxOS prototype and roadmap.
|
|
105
|
+
- `assayflux build FILE.cpp` — compile trusted C++ source; does not execute the resulting binary.
|
|
106
|
+
- `assayflux android wrapper PROJECT --gradle-version 8.9` — generate the Gradle wrapper (requires Gradle installed once).
|
|
107
|
+
- `assayflux android build PROJECT --variant debug` — run `assembleDebug` through the wrapper.
|
|
108
|
+
- Add `--bundle` to Android build to request an AAB (`bundleDebug` or `bundleRelease`).
|
|
109
|
+
|
|
110
|
+
Aliases: `af`, `assayfluxos`, and `assayflux-builder` are installed entry points to the same command router; the separate tool areas are exposed as command groups (`project`, `os`, `android`, etc.). They are not separate operating systems or independent binaries yet.
|
|
111
|
+
|
|
112
|
+
## Maturity and security
|
|
113
|
+
|
|
114
|
+
The active parser/runtime implements a deliberate starter subset: application label, variable declarations/assignment, literals, arithmetic/comparison/unary operators, `print`, `if/else`, `while`, and an explicitly enabled `pycall` bridge. It does not yet implement every historical grammar production or every legacy generator feature. Native C++ build compiles an existing trusted C++ file; it does not compile AssayFlux source into C++.
|
|
115
|
+
|
|
116
|
+
The in-process runtime is not an OS-enforced sandbox. Native code and Python extensions can perform host actions. Sentinel diagnostics cover defined error classes and do not guarantee finding every bug. Android build success depends on a valid Android project, JDK, SDK/licenses, and compatible plugins. A wrapper downloads its configured Gradle distribution after wrapper files are generated and committed; the SDK and JDK are not automatically installed.
|
|
117
|
+
|
|
118
|
+
The historical grammar document retains its original `0.2.0` metadata by design; the active parser subset and release metadata are documented separately in `docs/GRAMMAR_PRESERVATION_NOTE.md`. See `docs/VERIFICATION_REPORT.md`, `docs/SYNTAX_REFERENCE.md`, `docs/SECURITY_MODEL.md`, and `docs/ROADMAP.md` for verified scope and remaining work. The original `docs/grammar.md` is preserved byte-for-byte; new implemented bridge syntax is documented separately and does not rewrite that historical file.
|
|
119
|
+
|
|
120
|
+
## Source preservation
|
|
121
|
+
|
|
122
|
+
The three original source projects are retained under `legacy_sources/` as migration references. Their presence does not mean every legacy feature is active in the canonical runtime.
|
|
123
|
+
|
|
124
|
+
## License
|
|
125
|
+
|
|
126
|
+
MIT. See `LICENSE`.
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# AssayFlux Scientific Systems
|
|
2
|
+
|
|
3
|
+
**Version 0.1.0 · Alpha · Created by Md Safarujjaman · AssayFlux**
|
|
4
|
+
|
|
5
|
+
AssayFlux Scientific Systems is the umbrella Python distribution for the AssayFlux language/runtime, diagnostics and security checkpoints, scientific Python bridge, project starter builder, native C++ build helper, and early AssayFluxOS development utilities.
|
|
6
|
+
|
|
7
|
+
- **Author:** Md Safarujjaman
|
|
8
|
+
- **Organization/project:** AssayFlux
|
|
9
|
+
- **Email:** `assayflux@gmail.com`
|
|
10
|
+
- **Project contact:** `mdsafarujjaman@assayflux.com`
|
|
11
|
+
- **Website:** https://www.assayflux.com
|
|
12
|
+
- **PyPI distribution:** `AssayFluxScientificSystems` (the normalized package name; display name is “AssayFlux Scientific Systems”)
|
|
13
|
+
- **Python import:** `assayflux`
|
|
14
|
+
- **Version:** `0.1.0`
|
|
15
|
+
- **Python:** 3.11+
|
|
16
|
+
|
|
17
|
+
## Install
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
python -m pip install AssayFluxScientificSystems
|
|
21
|
+
assayflux --version
|
|
22
|
+
assayflux doctor
|
|
23
|
+
assayflux setup --science # optional, after this version is published
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Pip automatically installs declared Python dependencies (currently Lark). Optional scientific packages can be installed with:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
python -m pip install 'AssayFluxScientificSystems[science]'
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
The `science` extra installs NumPy, SciPy, pandas, and Matplotlib. These are optional because they are comparatively large and not needed for the core language. Java/JDK, Android SDK, C++ compiler, Git, Node.js, and Gradle are external system tools and are not silently installed by pip. `assayflux doctor` reports their availability.
|
|
33
|
+
|
|
34
|
+
## Quick start
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
assayflux check examples/hello.assayflux
|
|
38
|
+
assayflux run examples/hello.assayflux
|
|
39
|
+
assayflux syntax
|
|
40
|
+
assayflux syntax python
|
|
41
|
+
assayflux project create ./MyProject --name 'My Project'
|
|
42
|
+
assayflux os info
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Python bridge example:
|
|
46
|
+
|
|
47
|
+
```assayflux
|
|
48
|
+
let root = pycall("math", "sqrt", 81)
|
|
49
|
+
print(root)
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Enable the capability explicitly:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
assayflux run main.assayflux --allow-python --python-modules math
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
The currently supported bridge modules are `math`, `statistics`, `json`, and optional `numpy`, `pandas`, and `scipy.stats`. Only allowlisted functions and primitive-compatible values cross the boundary. Python interoperability executes in the host process and is **not a sandbox**; use only with trusted source and trusted modules.
|
|
59
|
+
|
|
60
|
+
## CLI commands
|
|
61
|
+
|
|
62
|
+
- `assayflux check FILE` — parse and perform static checks without execution.
|
|
63
|
+
- `assayflux run FILE` — interpret source with execution budgets.
|
|
64
|
+
- `assayflux syntax [topic]` — display implemented syntax and examples.
|
|
65
|
+
- `assayflux doctor` — report Python and optional external-tool availability.
|
|
66
|
+
- `assayflux setup --science` — download optional scientific Python dependencies (requires this release to be available from PyPI).
|
|
67
|
+
- `assayflux setup --dev` — download test/build tools (requires this release to be available from PyPI).
|
|
68
|
+
- `assayflux report list|show|export` — inspect local diagnostic reports.
|
|
69
|
+
- `assayflux project create PATH --name NAME` — create a starter project.
|
|
70
|
+
- `assayflux os info|roadmap` — explain the current AssayFluxOS prototype and roadmap.
|
|
71
|
+
- `assayflux build FILE.cpp` — compile trusted C++ source; does not execute the resulting binary.
|
|
72
|
+
- `assayflux android wrapper PROJECT --gradle-version 8.9` — generate the Gradle wrapper (requires Gradle installed once).
|
|
73
|
+
- `assayflux android build PROJECT --variant debug` — run `assembleDebug` through the wrapper.
|
|
74
|
+
- Add `--bundle` to Android build to request an AAB (`bundleDebug` or `bundleRelease`).
|
|
75
|
+
|
|
76
|
+
Aliases: `af`, `assayfluxos`, and `assayflux-builder` are installed entry points to the same command router; the separate tool areas are exposed as command groups (`project`, `os`, `android`, etc.). They are not separate operating systems or independent binaries yet.
|
|
77
|
+
|
|
78
|
+
## Maturity and security
|
|
79
|
+
|
|
80
|
+
The active parser/runtime implements a deliberate starter subset: application label, variable declarations/assignment, literals, arithmetic/comparison/unary operators, `print`, `if/else`, `while`, and an explicitly enabled `pycall` bridge. It does not yet implement every historical grammar production or every legacy generator feature. Native C++ build compiles an existing trusted C++ file; it does not compile AssayFlux source into C++.
|
|
81
|
+
|
|
82
|
+
The in-process runtime is not an OS-enforced sandbox. Native code and Python extensions can perform host actions. Sentinel diagnostics cover defined error classes and do not guarantee finding every bug. Android build success depends on a valid Android project, JDK, SDK/licenses, and compatible plugins. A wrapper downloads its configured Gradle distribution after wrapper files are generated and committed; the SDK and JDK are not automatically installed.
|
|
83
|
+
|
|
84
|
+
The historical grammar document retains its original `0.2.0` metadata by design; the active parser subset and release metadata are documented separately in `docs/GRAMMAR_PRESERVATION_NOTE.md`. See `docs/VERIFICATION_REPORT.md`, `docs/SYNTAX_REFERENCE.md`, `docs/SECURITY_MODEL.md`, and `docs/ROADMAP.md` for verified scope and remaining work. The original `docs/grammar.md` is preserved byte-for-byte; new implemented bridge syntax is documented separately and does not rewrite that historical file.
|
|
85
|
+
|
|
86
|
+
## Source preservation
|
|
87
|
+
|
|
88
|
+
The three original source projects are retained under `legacy_sources/` as migration references. Their presence does not mean every legacy feature is active in the canonical runtime.
|
|
89
|
+
|
|
90
|
+
## License
|
|
91
|
+
|
|
92
|
+
MIT. See `LICENSE`.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Architecture
|
|
2
|
+
|
|
3
|
+
```text
|
|
4
|
+
source file -> source guard -> Lark parser -> AST -> semantic checks
|
|
5
|
+
-> policy/capability boundary -> interpreter -> result/report
|
|
6
|
+
```
|
|
7
|
+
|
|
8
|
+
- `language/grammar.lark`: official starter grammar.
|
|
9
|
+
- `language/parser.py`: Lark parser and AST construction.
|
|
10
|
+
- `language/ast_nodes.py`: immutable source-located AST.
|
|
11
|
+
- `language/semantic.py`: conservative static analysis.
|
|
12
|
+
- `security/checkpoints.py`: source checks and shared policy limits.
|
|
13
|
+
- `runtime/interpreter.py`: step-budgeted execution.
|
|
14
|
+
- `runtime/python_bridge.py`: allowlisted, primitive-value Python interop helper.
|
|
15
|
+
- `runtime/sqlite_runtime.py`: workspace-bound SQLite helper.
|
|
16
|
+
- `diagnostics/`: stable diagnostic types and local report writer.
|
|
17
|
+
- `developer/doctor.py`: environment health checks.
|
|
18
|
+
- `cli.py`: single command-line entry point.
|
|
19
|
+
|
|
20
|
+
The legacy source archives are retained as migration references only. Their modules are not imported automatically by the new engine. Generator, task, shell and project-builder code will be ported only after API contracts and security boundaries are reviewed.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Feature availability matrix — 0.1.0
|
|
2
|
+
|
|
3
|
+
| Area | Available in canonical package | Scope / caveat |
|
|
4
|
+
|---|---|---|
|
|
5
|
+
| Language parser | Yes | Lark-based parser and AST; small explicit subset only. |
|
|
6
|
+
| Variables and expressions | Yes | `let`, assignment, numbers, strings, booleans, null, arithmetic, comparisons, unary minus/not. |
|
|
7
|
+
| Control flow | Yes | `print`, `if/else`, `while`; bounded runtime. |
|
|
8
|
+
| Python interoperability | Yes, opt-in | `pycall` to curated callables in `math`, `statistics`, `json`; optional `numpy`, `pandas`, `scipy.stats`. Requires `--allow-python` and module allowlist. Not a sandbox. |
|
|
9
|
+
| Structured diagnostics | Yes | Stable diagnostic codes, source location, local JSONL reports, export/list/show. |
|
|
10
|
+
| Security checkpoints | Partial | Source size, AST, numeric, loop, step and output budgets; capabilities. No OS isolation or full taint analysis. |
|
|
11
|
+
| Environment doctor | Yes | Detects Python/Lark/SQLite and optional external tools (compiler, Java, Gradle, adb, Git, Node, Android SDK variables). |
|
|
12
|
+
| Project builder | Starter only | Creates a starter `main.assayflux` and README. Not a complete multi-language project generator. |
|
|
13
|
+
| Native C++ | Partial | Compiles an existing trusted `.cpp` file with workspace and timeout checks. No source-to-C++ compiler and no automatic binary execution. |
|
|
14
|
+
| SQLite runtime | Library API | Local SQLite helper exists, but SQL is not yet first-class syntax integrated into the language grammar/CLI. |
|
|
15
|
+
| HTML/CSS/JavaScript/SQL/Python generators | Legacy/reference only | Original implementations retained under `legacy_sources/`; not all are ported to the canonical package. |
|
|
16
|
+
| AssayFluxOS | Prototype/reference | Host-side OS development utilities and legacy shell/filesystem/plugin prototypes. No bootable OS, distro, or kernel. |
|
|
17
|
+
| Android Gradle wrapper | Command integration | Can generate wrapper via an installed Gradle; wrapper then downloads the selected Gradle distribution. No Gradle wrapper JAR bundled in the Python package. |
|
|
18
|
+
| Android APK/AAB | Build command only | Calls `assembleDebug`/`assembleRelease` or `bundleDebug`/`bundleRelease` in a supplied Android project. Requires configured JDK, Android SDK/licenses, plugin compatibility, and a complete Android app. No APK/AAB verified in this release. |
|
|
19
|
+
| VS Code syntax highlighting | Yes | TextMate JSON grammar validates as JSON; highlighting completeness not exhaustively tested. |
|
|
20
|
+
| PyPI publishing notebook | Yes | Builds/tests and uploads via a hidden token prompt; owner must run it and authorize publication. Not published by this release build. |
|
|
21
|
+
| Original grammar preservation | Yes | `docs/grammar.md` byte-for-byte matches the owner-provided source; new syntax is documented separately. |
|
|
22
|
+
|
|
23
|
+
## Feature boundary
|
|
24
|
+
|
|
25
|
+
The presence of files in `legacy_sources/` is preservation for migration, not proof of live integration. The active language does not yet support user-defined functions, list/dictionary literals, general imports, classes, async, a full standard library, complete HTML/CSS/JS/SQL generation, or direct AssayFlux-to-native compilation.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Grammar preservation note
|
|
2
|
+
|
|
3
|
+
`docs/grammar.md` is the original owner-supplied grammar document. It is preserved byte-for-byte as requested, including its historical metadata line `Current package version: 0.2.0`. That version label describes the original document's provenance, not the package release version in `pyproject.toml`, which is `0.1.0`.
|
|
4
|
+
|
|
5
|
+
The canonical runtime parser uses `src/assayflux/language/grammar.lark`. It implements only the subset documented in `SYNTAX_REFERENCE.md`; it does not yet implement all constructs described in the historical grammar. New implementation syntax is additive and documented separately rather than rewriting the preserved grammar.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# AssayFlux language specification — starter subset 0.2
|
|
2
|
+
|
|
3
|
+
This is an intentionally small first subset, not the final language design.
|
|
4
|
+
|
|
5
|
+
## Source
|
|
6
|
+
- UTF-8 text; NUL is rejected.
|
|
7
|
+
- One statement per line; semicolons may separate statements.
|
|
8
|
+
- `#` begins a comment through the end of the line.
|
|
9
|
+
- Braced blocks are used with `if` and `while`.
|
|
10
|
+
|
|
11
|
+
## Statements
|
|
12
|
+
```text
|
|
13
|
+
app "Program name"
|
|
14
|
+
let value = expression
|
|
15
|
+
value = expression
|
|
16
|
+
print(expression)
|
|
17
|
+
if condition { statements } else { statements }
|
|
18
|
+
while condition { statements }
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
`let` declares a name once in its lexical block. Assignments update an existing variable. Names declared inside an `if`/`while` block do not escape that block. `app` is optional metadata.
|
|
22
|
+
|
|
23
|
+
## Values and operators
|
|
24
|
+
- Values: integers, decimal floating-point numbers, strings, booleans (`true`, `false`), and `null`.
|
|
25
|
+
- Arithmetic: `+`, `-`, `*`, `/`, `%`; `+` also concatenates two strings.
|
|
26
|
+
- Comparisons: `==`, `!=`, `<`, `>`, `<=`, `>=`.
|
|
27
|
+
- Unary operators: `-`, `not`.
|
|
28
|
+
- Conditions must evaluate to booleans; truthy/falsy coercion is not performed.
|
|
29
|
+
- Division uses Python-style numeric division in this interpreter; exact decimal semantics remain an open specification decision.
|
|
30
|
+
|
|
31
|
+
## Current limitations
|
|
32
|
+
No user-defined functions, collections, module imports, async, classes, exception syntax, type annotations, network APIs, UI bindings, or native compilation are implemented in the current core. PythonBridge and SQLiteRuntime are host-side APIs, not source-language syntax yet.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Source consolidation audit
|
|
2
|
+
|
|
3
|
+
Three source archives were inspected and retained unchanged in logical source form under `legacy_sources/` (generated egg-info metadata removed). The unified package does not import legacy code implicitly.
|
|
4
|
+
|
|
5
|
+
| Source | Original role | Consolidation decision |
|
|
6
|
+
|---|---|---|
|
|
7
|
+
| `AssayFlux-main` | Custom language, parser/interpreter, generators and interop adapters | Kept as a reference; new engine uses a formal Lark grammar and explicit AST/runtime contracts rather than depending on the legacy lexer/parser API coupling. Generator/interop modules require staged porting and dedicated tests. |
|
|
8
|
+
| `AssayFlux-Professional` | CLI, project builder, runtime detection, validation and developer tools | Retained as reference. CLI and Doctor baseline implemented in the canonical package; project builder/task/registry behavior still requires contract-by-contract migration. |
|
|
9
|
+
| `AssayFluxOS` | FluxScript subset, shell, workspace filesystem and plugin configuration | Retained as reference. The new language is intended to become the single language core; shell/filesystem/plugin APIs remain to be migrated and security-reviewed. |
|
|
10
|
+
|
|
11
|
+
The merge is an architectural consolidation and new tested foundation, not a claim that every legacy feature is already ported. Existing prototypes are not automatically considered secure merely because they are preserved in this repository.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Roadmap
|
|
2
|
+
|
|
3
|
+
## Stage 0 — Consolidated baseline (current)
|
|
4
|
+
- Unified Python package and CLI aliases.
|
|
5
|
+
- Lark grammar, source-located AST, static checks and budgeted interpreter.
|
|
6
|
+
- Sentinel diagnostics, local bug report log, Doctor checks.
|
|
7
|
+
- Python bridge allowlist and SQLite helper.
|
|
8
|
+
- Starter tests, VS Code TextMate grammar, preserved source prototypes.
|
|
9
|
+
|
|
10
|
+
## Stage 1 — Language correctness
|
|
11
|
+
- Formal grammar and specification review; complete escape handling and source-span fidelity.
|
|
12
|
+
- Functions, modules/imports, lexical scopes, collections, structured exceptions, and defined numeric semantics.
|
|
13
|
+
- Stronger type system and semantic test matrix.
|
|
14
|
+
- Property-based/fuzz tests and malformed-input corpus.
|
|
15
|
+
|
|
16
|
+
## Stage 2 — Runtime and security
|
|
17
|
+
- Capability/effect model; process-isolated Python worker for untrusted programs.
|
|
18
|
+
- Explicit module manifest and package lock file.
|
|
19
|
+
- Hardened SQL transaction semantics and schema migration support.
|
|
20
|
+
- Resource and cancellation model.
|
|
21
|
+
|
|
22
|
+
## Stage 3 — Targets and developer tools
|
|
23
|
+
- HTML/CSS/JS/Python/SQL generators migrated behind tested interfaces.
|
|
24
|
+
- C++ backend with safe subprocess invocation, compiler detection, build directory isolation and reproducible build metadata.
|
|
25
|
+
- Project imports, dependency graph, diagnostics protocol, LSP/editor integration.
|
|
26
|
+
- Regression coverage for migrated toolkit and OS shell.
|
|
27
|
+
|
|
28
|
+
## Stage 4 — OS and Android
|
|
29
|
+
- One shared core package used by CLI, OS shell/workspace and Android bridge.
|
|
30
|
+
- Linux-based developer environment first; distribution engineering after reproducible builds and package management.
|
|
31
|
+
- Android packaging and device tests after core API stabilizes.
|
|
32
|
+
- Independent kernel research is a separate long-term project, not a result of this Python package.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# AssayFlux security model (initial baseline)
|
|
2
|
+
|
|
3
|
+
## Threat model
|
|
4
|
+
Assume source projects can be malformed or hostile. Inputs may be oversized, syntax may be crafted to exhaust resources, imported Python packages may be defective, and generated/native code may be unsafe. The current interpreter is an in-process development runtime, **not a sandbox for hostile code**.
|
|
5
|
+
|
|
6
|
+
## Security defaults
|
|
7
|
+
- UTF-8 source only, NUL rejected, source byte limit enforced before parsing.
|
|
8
|
+
- Formal Lark grammar; no execution of source via Python `eval` or `exec`.
|
|
9
|
+
- Static checks reject undefined names, duplicate declarations, incompatible assignment types, and invalid known operand types.
|
|
10
|
+
- Runtime step, loop and output budgets.
|
|
11
|
+
- Privileged operations use a deny-by-default capability manager. Python calls require `python.call` plus `python.module:<name>` and an approved module/callable. SQLite requires `database.read` and/or `database.write`. Native compilation requires `native.build`; the CLI grants it only when the user explicitly invokes `assayflux build`.
|
|
12
|
+
- Python bridge uses an explicit module/callable allowlist, primitive-value conversion and bounded nested values. Allowed modules remain trusted code; allowlisting is not process isolation.
|
|
13
|
+
- SQLite database path is confined to a project workspace, extension loading disabled, parameters are passed separately, and risky SQL commands are denied by default.
|
|
14
|
+
- Local diagnostic reports use restrictive file modes where supported and do not capture source code or environment variables by default.
|
|
15
|
+
- Optional native compilers are not invoked by the interpreter. The current native build helper uses argument arrays (never shell interpolation), a temporary build directory, a timeout, workspace path checks, hardened compiler flags and does not execute the output. It still compiles source with the host compiler, so only compile trusted generated source; a compiler exploit or hostile source can still affect the build host.
|
|
16
|
+
|
|
17
|
+
## Required future hardening before untrusted execution
|
|
18
|
+
1. Run untrusted programs in a separate OS process with a least-privilege account/container and OS-enforced CPU, memory, file, process and network limits.
|
|
19
|
+
2. Use per-project capability grants for filesystem, network, subprocess, database and device access; deny by default.
|
|
20
|
+
3. Add a formal effect model and capability-aware imports.
|
|
21
|
+
4. Audit dependencies, lock versions and verify artifact provenance.
|
|
22
|
+
5. Fuzz lexer/parser/AST/serialization, property-test interpreter invariants, and run static security analysis.
|
|
23
|
+
6. Review symlink/path race handling, logs, permissions, denial-of-service resistance, and cross-platform behavior.
|
|
24
|
+
7. Have independent security review and threat-model testing before claiming production readiness.
|
|
25
|
+
|
|
26
|
+
## Bug reports
|
|
27
|
+
Reports are local JSON Lines under `~/.assayflux/reports/diagnostics.jsonl` by default. No automatic upload is performed. Reports intentionally omit source contents and environment values. Users should review an export before sharing it because filenames and error details can still reveal project information.
|
|
28
|
+
|
|
29
|
+
## Guarantees
|
|
30
|
+
Sentinel is a set of checks and diagnostics, not a proof that programs are bug-free. Static analysis cannot identify every logic defect; runtime monitoring cannot detect every wrong result; Python and native extensions can bypass language-level protections. Security claims must be tied to tested, documented guarantees.
|
|
31
|
+
|
|
32
|
+
## Capability grants
|
|
33
|
+
The `CapabilityManager` is deny-by-default. The initial capability names include `python.call`, `python.module:<module>`, `database.read`, `database.write`, `native.build`, `filesystem.read`, `filesystem.write`, `network.connect`, and `subprocess.run`. A module allowlist and a capability grant are separate requirements. Only trusted host configuration should issue grants; AssayFlux source code must not be allowed to grant capabilities to itself. The CLI's explicit `build` command grants `native.build` for that one requested host operation.
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# AssayFlux syntax reference (implemented subset, v0.1.0)
|
|
2
|
+
|
|
3
|
+
This reference describes the **implemented parser/runtime subset**, not every construct in the preserved historical `grammar.md`.
|
|
4
|
+
|
|
5
|
+
## Program declaration and statements
|
|
6
|
+
|
|
7
|
+
```assayflux
|
|
8
|
+
app "Scientific demo" # optional application label
|
|
9
|
+
let count = 6 * 7 # declaration (once per name)
|
|
10
|
+
count = count + 1 # assignment to a declared variable
|
|
11
|
+
print(count) # print one line
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Statements are separated by a newline or semicolon. Comments begin with `#` and continue to the end of the line.
|
|
15
|
+
|
|
16
|
+
## Values and operators
|
|
17
|
+
|
|
18
|
+
- Values: integer and decimal numbers, single- or double-quoted strings, `true`, `false`, `null`.
|
|
19
|
+
- Arithmetic: `+`, `-`, `*`, `/`, `%`.
|
|
20
|
+
- Comparisons: `==`, `!=`, `<`, `>`, `<=`, `>=`.
|
|
21
|
+
- Unary: numeric `-value`, boolean `not value`.
|
|
22
|
+
- Conditions must evaluate to booleans. Strings can be concatenated with `+`.
|
|
23
|
+
|
|
24
|
+
## Control flow
|
|
25
|
+
|
|
26
|
+
```assayflux
|
|
27
|
+
let n = 0
|
|
28
|
+
while n < 3 {
|
|
29
|
+
print(n)
|
|
30
|
+
n = n + 1
|
|
31
|
+
}
|
|
32
|
+
if n == 3 {
|
|
33
|
+
print("finished")
|
|
34
|
+
} else {
|
|
35
|
+
print("not finished")
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Block-local declarations do not escape their block. Re-declaration/shadowing is currently rejected by semantic checks.
|
|
40
|
+
|
|
41
|
+
## Approved Python library bridge
|
|
42
|
+
|
|
43
|
+
The only direct bridge expression currently implemented is `pycall(module_string, function_string, args...)`:
|
|
44
|
+
|
|
45
|
+
```assayflux
|
|
46
|
+
let root = pycall("math", "sqrt", 81)
|
|
47
|
+
print(root)
|
|
48
|
+
let encoded = pycall("json", "dumps", "hello")
|
|
49
|
+
print(encoded)
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Enable explicitly at run time:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
assayflux run main.assayflux --allow-python --python-modules math,statistics,json
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Optional NumPy calls are available when NumPy is installed:
|
|
59
|
+
|
|
60
|
+
```assayflux
|
|
61
|
+
let values = pycall("json", "loads", "[1, 2, 3, 4]")
|
|
62
|
+
let average = pycall("numpy", "mean", values)
|
|
63
|
+
print(average)
|
|
64
|
+
let zscores = pycall("scipy.stats", "zscore", values)
|
|
65
|
+
print(zscores)
|
|
66
|
+
let table = pycall("pandas", "DataFrame", pycall("json", "loads", "[{\"x\":1},{\"x\":2}]"))
|
|
67
|
+
print(table)
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
python -m pip install 'AssayFluxScientificSystems[science]'
|
|
72
|
+
assayflux run main.assayflux --allow-python --python-modules json,numpy,scipy.stats,pandas
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
The bridge supports only allowlisted public callables and primitive/list/dictionary-compatible arguments and return values. It is for trusted code, **not a sandbox**. Python modules can execute arbitrary code on import/call; only enable Python interoperability for code you trust. The current language does not yet support arbitrary Python `import`, Python attribute access, user-defined functions, list/dictionary literals, classes, or general Python object values.
|
|
76
|
+
|
|
77
|
+
## CLI reference
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
assayflux --version
|
|
81
|
+
assayflux check examples/hello.assayflux
|
|
82
|
+
assayflux run examples/hello.assayflux
|
|
83
|
+
assayflux run main.assayflux --allow-python --python-modules math
|
|
84
|
+
assayflux syntax
|
|
85
|
+
assayflux syntax python
|
|
86
|
+
assayflux doctor
|
|
87
|
+
assayflux report list
|
|
88
|
+
assayflux project create ./MyProject --name "My Project"
|
|
89
|
+
assayflux os info
|
|
90
|
+
assayflux os roadmap
|
|
91
|
+
assayflux build examples/native.cpp --workspace .
|
|
92
|
+
assayflux android wrapper ./AndroidProject --gradle-version 8.9
|
|
93
|
+
assayflux android build ./AndroidProject --variant debug
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Not yet implemented in the core language
|
|
97
|
+
|
|
98
|
+
Function definitions/calls (other than the built-in `pycall`), collection literals/indexing, user modules/import statements, classes, exceptions, async/concurrency, full HTML/CSS/JavaScript/SQL generation syntax, and direct AssayFlux-to-C++ compilation are not implemented in the active parser/runtime. Some related prototypes remain in `legacy_sources/` and are not automatically active.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Verification report — AssayFlux Scientific Systems 0.1.0
|
|
2
|
+
|
|
3
|
+
## Identity
|
|
4
|
+
- Product: AssayFlux Scientific Systems
|
|
5
|
+
- PyPI distribution name: `AssayFluxScientificSystems` (PyPI canonicalizes case; install with `python -m pip install AssayFluxScientificSystems`)
|
|
6
|
+
- Python import package: `assayflux`
|
|
7
|
+
- Version: `0.1.0`
|
|
8
|
+
- Author: Md Safarujjaman (`assayflux@gmail.com`)
|
|
9
|
+
- Contact: `mdsafarujjaman@assayflux.com`
|
|
10
|
+
- Website: `https://www.assayflux.com`
|
|
11
|
+
- Python requirement: `>=3.11`
|
|
12
|
+
- Historical grammar SHA-256: `5f08dbd4791a2b4e74b3c374c83ca92b8fccbb4e4ec7f68df8e9b004534c3c1e`
|
|
13
|
+
|
|
14
|
+
## Checks passed in this build environment
|
|
15
|
+
- `python -m pytest -q`: **36 passed** (the `src` import path is configured in `pyproject.toml`).
|
|
16
|
+
- `PYTHONPATH=src python -m unittest discover -s tests -q`: **36 passed**.
|
|
17
|
+
- `python -m compileall -q src tests`: passed.
|
|
18
|
+
- CLI version, syntax catalogue, `check`, `run`, starter project generation, and setup help smoke checks: passed.
|
|
19
|
+
- Both shipped examples ran and produced expected output.
|
|
20
|
+
- Regression test: non-boolean `if`/`while` conditions produce a controlled language runtime diagnostic rather than an unhandled Python exception.
|
|
21
|
+
- Security policy rejects invalid/non-positive resource limits and malformed Python module allowlists.
|
|
22
|
+
- Explicit Python bridge capability test: denied without grant; math call succeeds with grant.
|
|
23
|
+
- Scientific integration smoke test using JSON + NumPy + SciPy stats + pandas passed in the tested environment where optional libraries were installed.
|
|
24
|
+
- VS Code TextMate grammar JSON: valid.
|
|
25
|
+
- Package metadata: `Name: AssayFluxScientificSystems`, `Version: 0.1.0`.
|
|
26
|
+
- Wheel built: `assayfluxscientificsystems-0.1.0-py3-none-any.whl`.
|
|
27
|
+
- Wheel installed into an isolated target directory; import, version, parser, interpreter, and runtime-diagnostic smoke tests passed.
|
|
28
|
+
- Source distribution built with the installed setuptools build backend.
|
|
29
|
+
- Publishing notebook JSON parsed successfully; it now installs Lark, uses fail-fast test/build subprocesses, checks the preserved grammar hash, builds wheel + sdist, runs Twine validation, and requires explicit token-protected confirmation before upload.
|
|
30
|
+
- Historical `docs/grammar.md` matches the supplied original file byte-for-byte. SHA-256: `5f08dbd4791a2b4e74b3c374c83ca92b8fccbb4e4ec7f68df8e9b004534c3c1e`. Its historical `Current package version: 0.2.0` line is intentionally retained; it is not the release metadata.
|
|
31
|
+
|
|
32
|
+
## Not verified / not claimed
|
|
33
|
+
- **Not published to PyPI.** Name availability/ownership and token-authenticated upload must be checked by running the notebook against live PyPI. Case in a package name is normalized by PyPI; punctuation matters, so this requested no-hyphen name is distinct from `assayflux-scientific-systems`.
|
|
34
|
+
- Twine validation and actual upload were not executed in this offline environment; the Colab notebook installs Twine and runs the checks before the separate publish step.
|
|
35
|
+
- No Gradle wrapper generation or APK/AAB build was executed; Gradle, JDK, Android SDK/licenses, and a valid Android project are environment-specific.
|
|
36
|
+
- Termux / Python 3.14 was not tested here. The declared minimum is Python 3.11.
|
|
37
|
+
- No independent security audit, penetration test, fuzzing campaign, formal verification, or OS sandbox validation was performed.
|
|
38
|
+
- Python bridge and native C++ build are for trusted code only; they are not sandboxed.
|
|
39
|
+
- Full legacy generator parity, complete module/import semantics, SQL syntax integration, source-to-C++ compilation, a bootable AssayFluxOS, Linux distribution, independent kernel, and Android native application are not complete.
|
|
40
|
+
|
|
41
|
+
A passing test suite demonstrates only that the included tests passed; it does not prove absence of defects or vulnerabilities.
|