YREA-SLS/docs/changes.md

98 lines
5.8 KiB
Markdown

---
Title: Stack Language Specification
Prev:
Next:
---
# Stack Language Specification
**Version**: 0.8.2
**Status**: Draft Specification
**Changes**:
- 0.5 (AI)
1. **Escape sequences** - Added a complete list of escape sequences for string literals
2. **Type Tuples** - Defined them as function signatures representing stack effects
3. **Control flow TokenStrings** - Clarified that `if`, `while`, `match`, etc. use TokenStrings
4. **Generic constructs** - Clarified that generics need trait constraints when operations are performed
5. **Stack manipulation traits** - Combined into a single `Stackable` trait
6. **Size trait** - Added proper definition inheriting from `Addable`, `Comparable`, and `Convertible`
7. **Empty traits** - Clarified that traits can be empty (especially when used with inheritance)
8. **Trait inheritance** - Fixed syntax to require both `inher` and `trait` declarations
9. **Array combinators** - Clarified that the functions inside parse their TokenStrings
10. **`::` in TokenStrings** - Clarified it should NOT be used in trait/impl contexts
- 0.5.1 (Human)
1. Created TODOs
2. Made various corrections (not everything was corrected)
3. Reviewed and corrected some code blocks
4. Made a few adjustments manually
- 0.6 (AI)
1. **Operator descriptions** - Added natural language descriptions for all built-in operators
2. **Operators vs Functions** - Clarified distinction and naming rules
3. **Generic trait syntax** - Documented `<>` syntax for generic traits
4. **Generic trait inheritance** - Clarified rules for inheriting from generic traits
5. **Code block types** - Distinguished actual language definitions from examples
6. **Trait appendix** - Created comprehensive trait definitions appendix
7. **TokenString contexts** - Listed all control flow operators and their parsing behavior
8. **Lambda operator** - Added specification for lambda operator
9. **Type parameter enforcement** - Documented current parsing behavior
10. **Identifier literal requirements** - Specified `::` rules for different contexts
11. **Trait implementation rules** - Clarified implementation semantics
12. **Type conversions** - Changed to explicit conversion functions
13. **Memory management** - Moved to appendix as future feature
14. **Module system** - Added appendix entry for future imports
15. **Examples section** - Moved to appendix
16. **Syntax summary** - Moved to appendix and expanded
- 0.6.1 (AI)
1. **Variadic arguments** - Decision: Use array syntax for variable arguments (no special variadic syntax yet)
2. **Inheritance before trait** - Decision: Yes, inheritance declarations must come before trait definition
3. **`inher` operator** - Decision: No, merge inheritance into trait operator (removed `inher`)
4. **Separate `inher` vs `impl`** - Decision: Keep them separate (impl is for implementations only)
- 0.6.2 (Human)
1. Created TODOs
2. Made various corrections (not everything was corrected)
3. Reviewed and corrected some code blocks
4. Made a few adjustments manually
5. Reversed removing `inher`
- 0.7 (AI)
1. **Operator definition** - Clarified that operators can be user/library defined via trait implementation
2. **Generic function syntax** - Fixed to use trait constraints in type tuple, not generic parameters
3. **Variable arguments with Iterable** - Changed array syntax to Iterable trait for variable args
4. **Example classifications** - Cleaned up "Actual Language Definitions" vs examples distinction
5. **Struct field access** - Clarified that get and set consume their arguments
6. **Section 6 rename** - Renamed "Operators (Postfix)" to "Built-in Operators"
7. **Module syntax** - Added `::` prefix for module imports
8. **Module alias options** - Added multiple alias syntax options
- 0.7.1 (Human)
1. Formatting changes
- 0.7.2 (Human)
1. Removed AI editing restrictions of reviewed code blocks
- 0.8 (AI)
1. **Document reorganization** - Restructured for user-focused learning
2. **Section consolidation** - Moved implementation details to appendices
3. **Minimal duplication** - Added cross-references instead of repeating content
4. **Shorter sections** - Split large sections into focused subsections
5. **New appendices** - Added Standard Library and Operator references
6. **Tutorial content** - Added beginner tutorials to Appendix G
7. **Trait reference** - Consolidated all trait definitions in Appendix B
8. **Grammar simplification** - Referenced Implementable trait instead of repeating
- 0.8.1 (Human)
1. Added links
- 0.8.2 (AI)
1. **Constants** - Added constant definition syntax and semantics
2. **Enhanced literals** - Added underscore separators, character literals, octal syntax
3. **Mathematical functions** - Added sqrt, abs, trig functions, rounding, min/max
4. **Randomness** - Added rand and seed operators
5. **Array enhancements** - Added typed array syntax and arrays of structs
6. **Collection functions** - Added zip, enumerate, sum, mean, foldl, foldr
7. **String utilities** - Added replace, trim, find, starts_with, ends_with, format
8. **Testing support** - Added assert operator for inline testing
9. **Reflection operators** - Added type_of and implements for runtime introspection
10. **Compiler directives** - Added mention of implementation-specific directives
11. **Type reference** - Added Appendix H with complete type reference
12. **Math trait** - Added comprehensive Math trait to Appendix B
13. **Overflow behavior** - Documented integer wrap and float IEEE behavior
14. **Grammar updates** - Expanded Appendix D with new syntax forms
15. **Cross-references** - Updated all references to include new operators and functions
---