Files
Claro/README.md
T

245 lines
5.1 KiB
Markdown

# Claro v1.18.26
<img src="assets/Claro_Logo.jpg" alt="Claro logo" width="160">
Claro is a small, readable scripting language designed to help beginners — especially learners with learning disabilities — learn programming without being overwhelmed by punctuation-heavy syntax.
Claro stays plain-text first: simple enough to start with `SET name "Jon"`, but able to grow into stronger typed scripts, objects, packages, networking, and tooling over the v1 line. Graphics/SDL work is experimental and not enabled in the stable executable.
## Status
**Current release:** Claro v1.18.26
Validated in this package:
```bash
./claro --version
# Claro v1.18.26
./claro test
# PASS: 0 failure(s)
./claro validate
# Validation passed. Claro v1.18.26 networking reliability is ready for use.
```
## Beginner-first syntax
Claro accepts both the sentence-like style and the shorter simple style:
```claro
SET name TO "Jon"
SET name "Jon"
SET city to "Edmonton"
ASK "What is your name?" name
SAY "Hello " + name
IF name = "Jon"
SAY "Nice name!"
END
```
Older forms such as `ASK "Name?" AS name`, `ENDIF`, `DONE`, and `LEARNED` still work so older Claro examples do not break.
## Simple functions
```claro
TEACH greet name
SAY "Hello " + name
END
DO greet "Jon"
```
Older function syntax still works:
```claro
TEACH greet TAKES name
SAY "Hello " + name
LEARNED
CALL greet WITH "Jon"
```
## Objects and classes
Classes can have typed fields and simple methods.
```claro
CLASS Player
HAS name TEXT
HAS score NUMBER
TEACH show
SAY name
SAY score
END
TEACH add points
SET score score + points
END
END
NEW Player player
SET player.name "Jon"
SET player.score 10
DO player.show
DO player.add 5
SAY player.score
```
Object helper commands:
```claro
OBJECT CLASS player AS kind
OBJECT FIELDS player AS fields
```
## Static type safety
Beginners can still write the simplest form:
```claro
SET name "Jon"
```
When learners are ready, Claro can protect variables with plain-text types:
```claro
SET score NUMBER 10
SET name TEXT "Jon"
SET ready YESNO YES
TYPE OF score AS kind
SAY kind
CHECK TYPE score IS NUMBER
```
Advanced container checks are available through `claro typecheck`:
```claro
SET names AS LIST OF TEXT TO LIST
ADD "Ada" TO names
SET scores AS MAP OF NUMBER TO MAP
PUT scores KEY "math" VALUE 98
```
## Project and package workflow
v1.18.26 hardens Claro's project/package workflow.
Create a starter project:
```bash
claro new MyProject
cd MyProject
claro run
```
Manage packages:
```bash
claro package init
claro package add text
claro package list
claro package remove text
claro package doctor
claro package lock
```
Claro now creates and maintains:
```text
claro.project
claro.lock
packages/
```
Package names are checked so unsafe names such as `../bad` are rejected.
## Networking
v1.18.26 adds safer beginner networking commands with offline `claro://` test URLs.
```claro
HTTP CHECK "claro://hello" AS safe
SAY safe
HTTP GET "claro://hello" AS page STATUS status
SAY page
SAY status
HTTP SAVE "claro://json" TO "network_demo.json" AS saveStatus
SAY saveStatus
```
The latest HTTP status is also stored in `LASTHTTP`. Real `http://` and `https://` requests use `curl` when available, while `claro://` works offline for lessons and tests.
## Useful commands
```bash
claro help
claro --version
claro test
claro validate
claro doctor
claro examples
claro check examples/quiz.claro
claro typecheck examples/type_hardening.claro
claro fmt examples/quiz.claro
claro repl
claro new MyProject
claro run
claro package init
claro package add text
claro package list
claro package doctor
claro ide
```
## Good first scripts
```bash
./claro lessons/01_hello.claro
./claro examples/quiz.claro
./claro examples/simple_functions.claro
./claro examples/objects_classes.claro
./claro examples/text_polish.claro
./claro examples/networking.claro
```
## Documentation map
If you are new to Claro, start here:
1. `docs/QUICK_START.md`
2. `docs/FIRST_HOUR.md`
3. `lessons/README.md`
4. `docs/CLI.md`
5. `docs/CURRENT_STATUS.md`
Feature references:
- Language reference: `docs/SPEC.md`
- Friendly errors and checking: `docs/ERRORS.md`, `docs/LINTER.md`, `docs/TESTING.md`
- Formatter: `docs/FORMATTER.md`
- Static typing: `docs/ADVANCED_STATIC_TYPING.md`
- Objects/classes: `docs/V1_15_OBJECTS_CLASSES.md`
- Projects/packages: `docs/V1_16_PACKAGES_PROJECTS.md`, `docs/PACKAGE_REGISTRY.md`
- Networking/web: `docs/V1_17_NETWORKING.md`, `docs/WEB_SERVER_PLAN.md`
- Tasks/concurrency: `docs/CONCURRENCY.md`
- IDE/editor support: `docs/IDE.md`, `docs/EDITOR_EXTENSION_PLAN.md`
- Graphics/SDL status: `docs/GRAPHICS.md`, `docs/SDL12.md`
- Roadmaps: `docs/ROADMAP.md`, `docs/COMPLETE_PLATFORM_ROADMAP.md`
Historical release notes and validation logs are kept in files such as `docs/RC*_NOTES.md`, `docs/RC*_VALIDATION.md`, and older `docs/V1_*_VALIDATION.md`. They are useful for project history, but they are not the beginner starting path.
## Release direction
Claro should remain in the `v1.xx.yy` line for normal development. A future Claro v2 should mean a full rewrite years later, not an ordinary feature update.