Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# AGENTS.md — Guia para agentes de IA no Noxy VM

Máquina virtual de bytecode para a linguagem Noxy, em Go (módulo `noxy-vm`,
Go 1.25). Versão corrente: `v0.24.0` (`internal/version/version.go`).
Máquina virtual de bytecode para a linguagem Noxy, em Go (módulo `github.com/estevaofon/noxy`,
Go 1.25). Versão corrente: `v0.25.0` (`internal/version/version.go`).

**Fonte da verdade da linguagem: `docs/NOXY_LANGUAGE_SPEC.md`.** Regra de
linguagem vem da spec ou de teste no binário — nunca de um exemplo. Este
Expand All @@ -24,7 +24,7 @@ Source → Lexer → Parser → AST → Compiler → Bytecode (Chunk) → VM
| `internal/stdlib` | Módulos `.nx` embutidos (`//go:embed *.nx`, sem registro) |
| `cmd/noxy` | CLI, REPL (`runREPL`), `diagOut` (destino único dos diagnósticos da CLI) |
| `internal/ext`, `sdk/noxyplugin` | Extensões wasm e por processo (`noxy-plugin/1`); o SDK é módulo Go aninhado, testado à parte (`go test ./...` dentro dele) |
| `internal/pkgmanager` (`--get`/`--sync`, `noxy.sum` v2, `FindRoot`), `internal/lineedit`, `internal/console`, `internal/version`, `internal/plugin` (deprecado, sai na v0.25.0) | Periferia |
| `internal/pkgmanager` (`--get`/`--sync`, `noxy.sum` v2, `FindRoot`), `internal/lineedit`, `internal/console`, `internal/version`, `internal/plugin` (deprecado, sai na v0.26.0) | Periferia |

## Verificação obrigatória

Expand Down Expand Up @@ -179,4 +179,4 @@ hashes de todos em `noxy.sum`. Ver `docs/EXTENSIONS.md` e

---

**Versão**: 1.2 (Noxy VM 0.23.5) — atualizado em 2026-09-04
**Versão**: 1.2 (Noxy VM 0.25.0) — atualizado em 2026-09-05
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
# Changelog

## [0.25.0] - 2026-09-05

### Changed
- Caminho do módulo Go passa de `noxy-vm` para `github.com/estevaofon/noxy`,
o que habilita `go install github.com/estevaofon/noxy/cmd/noxy@latest`
(a partir da primeira tag publicada após esta mudança). Imports internos
e o `README.md` (seção *Installation*, `cd noxy` após o clone) foram
atualizados; nada muda para programas Noxy.

### Deprecated
- `sys_load_plugin`: a remoção (com `internal/plugin` e
`compiler.PluginNativeNames`) passa da v0.25.0 para a **v0.26.0**; o aviso
no stderr, `docs/EXTENSIONS.md` e a spec §10.1 refletem a nova janela.

## [0.24.0] - 2026-09-04

Package manager: `noxy --sync` reconstrói `noxy_libs` a partir de `noxy.mod`
Expand Down
22 changes: 19 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -184,14 +184,30 @@ Fixing beats staying compatible, until 1.0 says otherwise.

## Installation

### With `go install` (recommended)

Requires Go 1.25+. Installs the `noxy` binary into `$(go env GOPATH)/bin`
(make sure that directory is in your `PATH`):

```bash
go install github.com/estevaofon/noxy/cmd/noxy@latest
```

To install a specific release, replace `@latest` with a tag (e.g. `@v0.25.0`).

### From source

```bash
# Clone the repository
git clone https://github.com/estevaofon/noxy.git
cd noxy-vm
cd noxy

# Build
go build -o noxy ./cmd/noxy

# Or install into $(go env GOPATH)/bin
go install ./cmd/noxy

# Or run directly
go run ./cmd/noxy/main.go file.nx
```
Expand Down Expand Up @@ -222,7 +238,7 @@ exits with code `1`.
Noxy includes a powerful REPL (Read-Eval-Print Loop) for interactive coding. Just run `noxy` without arguments.

```noxy
Noxy REPL v0.24.0
Noxy REPL v0.25.0
Type 'exit' to quit.
>>> let x: int = 10
>>> x + 5
Expand Down Expand Up @@ -290,7 +306,7 @@ go run cmd/noxy/main.go noxy_examples/run_all_tests_concurrent.nx
## Architecture

```
noxy-vm/
noxy/
├── cmd/noxy/main.go # Main CLI
├── internal/
│ ├── lexer/ # Tokenization
Expand Down
20 changes: 10 additions & 10 deletions cmd/noxy/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,17 @@ import (
"errors"
"flag"
"fmt"
"github.com/estevaofon/noxy/internal/ast"
"github.com/estevaofon/noxy/internal/compiler"
"github.com/estevaofon/noxy/internal/console"
"github.com/estevaofon/noxy/internal/lexer"
"github.com/estevaofon/noxy/internal/lineedit"
"github.com/estevaofon/noxy/internal/parser"
"github.com/estevaofon/noxy/internal/pkgmanager"
"github.com/estevaofon/noxy/internal/token"
"github.com/estevaofon/noxy/internal/version"
"github.com/estevaofon/noxy/internal/vm"
"io"
"noxy-vm/internal/ast"
"noxy-vm/internal/compiler"
"noxy-vm/internal/console"
"noxy-vm/internal/lexer"
"noxy-vm/internal/lineedit"
"noxy-vm/internal/parser"
"noxy-vm/internal/pkgmanager"
"noxy-vm/internal/token"
"noxy-vm/internal/version"
"noxy-vm/internal/vm"
"os"
"path/filepath"
"runtime"
Expand Down
2 changes: 1 addition & 1 deletion cmd/noxy/main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
"strings"
"testing"

"noxy-vm/internal/lineedit"
"github.com/estevaofon/noxy/internal/lineedit"
)

func captureStdout(t *testing.T, run func()) string {
Expand Down
6 changes: 3 additions & 3 deletions cmd/noxy/process_exit_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import (
"testing"
"time"

"noxy-vm/internal/ext/exttest"
"github.com/estevaofon/noxy/internal/ext/exttest"
)

// sys_exit chama os.Exit direto: o unico jeito de provar que fecha as
Expand All @@ -32,8 +32,8 @@ func TestSysExitClosesProcessExtensions(t *testing.T) {
t.Fatal(err)
}
for name, data := range map[string][]byte{
"noxy_ext.toml": []byte(manifest),
"guest.nx": []byte("func pid() -> int\n return guest_pid()\nend\n"),
"noxy_ext.toml": []byte(manifest),
"guest.nx": []byte("func pid() -> int\n return guest_pid()\nend\n"),
filepath.Join("bin", asset): bin,
} {
if err := os.WriteFile(filepath.Join(pkg, name), data, 0o755); err != nil {
Expand Down
2 changes: 1 addition & 1 deletion docs/EXTENSIONS.md
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,7 @@ it); list exactly those asset names in `[binaries]`.
### `sys_load_plugin` (deprecated)

The line-delimited JSON plugin builtin is deprecated since v0.23.0 and
will be removed in v0.25.0 together with `internal/plugin` and the
will be removed in v0.26.0 together with `internal/plugin` and the
compiler's `PluginNativeNames` special case; it prints a warning on first
use. Migrate by publishing the plugin as a `kind = "process"` extension.

Expand Down
2 changes: 1 addition & 1 deletion docs/NOXY_LANGUAGE_SPEC.md
Original file line number Diff line number Diff line change
Expand Up @@ -2786,7 +2786,7 @@ io.close(f)
### System (`sys`)

`sys.version` is the version of the Noxy running the program — the same
string `noxy --version` prints (`v0.24.0`). It is a module binding, not a
string `noxy --version` prints (`v0.25.0`). It is a module binding, not a
call: `use sys` then `print(sys.version)`, or `use sys select version`, which
brings it in typed as `string`.

Expand Down
4 changes: 2 additions & 2 deletions docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@
<div class="hero-content">
<a href="https://github.com/estevaofon/noxy/blob/main/CHANGELOG.md" class="version-badge"
target="_blank">
<span class="version-badge-tag">v0.24.0</span>
<span class="version-badge-tag">v0.25.0</span>
Latest release &middot; changelog
<i class="fas fa-arrow-right"></i>
</a>
Expand Down Expand Up @@ -383,7 +383,7 @@ <h3>Standard Library</h3>

print(time.now()) // unix timestamp
print(length(sys.argv())) // command-line args
print(sys.version) // v0.24.0
print(sys.version) // v0.25.0

let user: map[string, any] = {"name": "Ana", "age": 30}
print(json_dumps(user)) // {"age":30,"name":"Ana"}</code></pre>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -707,10 +707,10 @@ anywhere.

- **v0.23.0 (this delivery):** the builtin keeps working. Its first call in a
process prints once to stderr: `warning: sys_load_plugin is deprecated
since v0.23.0 and will be removed in v0.25.0; publish the plugin as a kind
since v0.23.0 and will be removed in v0.26.0; publish the plugin as a kind
= "process" extension (docs/EXTENSIONS.md)`. `docs/` mark it deprecated;
the CHANGELOG states the window.
- **v0.25.0:** remove `sys_load_plugin`, `internal/plugin`,
- **v0.26.0** (janela estendida na v0.25.0, que só renomeou o módulo Go): remove `sys_load_plugin`, `internal/plugin`,
`compiler.PluginNativeNames` and its three call sites, and the JSON
protocol from `docs/`.

Expand Down Expand Up @@ -852,7 +852,7 @@ One release, v0.23.0, in the order of issue #80's checkboxes:
6. `noxy_terminal` migrated and released (checkbox 5).
7. `noxy_dynamodb` migrated and released (checkbox 6).
8. Deprecation warning for `sys_load_plugin`, CHANGELOG entry with the
removal window (checkbox 8, first half; second half at v0.25.0).
removal window (checkbox 8, first half; second half at v0.26.0).

Steps 2–4 are one PR to `develop`; 5–8 follow as small PRs.

Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
module noxy-vm
module github.com/estevaofon/noxy

go 1.25.0

Expand Down
2 changes: 1 addition & 1 deletion internal/ast/ast.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package ast
import (
"bytes"
"fmt"
"noxy-vm/internal/token"
"github.com/estevaofon/noxy/internal/token"
"strings"
)

Expand Down
6 changes: 3 additions & 3 deletions internal/ast/string_golden_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ import (
"strings"
"testing"

"noxy-vm/internal/ast"
"noxy-vm/internal/lexer"
"noxy-vm/internal/parser"
"github.com/estevaofon/noxy/internal/ast"
"github.com/estevaofon/noxy/internal/lexer"
"github.com/estevaofon/noxy/internal/parser"
)

// ast.Node.String() é o texto que aparece em diagnósticos ("addr(ref x)",
Expand Down
2 changes: 1 addition & 1 deletion internal/chunk/chunk.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package chunk

import (
"fmt"
"noxy-vm/internal/value"
"github.com/estevaofon/noxy/internal/value"
"sync"
"sync/atomic"
)
Expand Down
10 changes: 5 additions & 5 deletions internal/chunk/chunk_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ import (
"strings"
"testing"

"noxy-vm/internal/chunk"
"noxy-vm/internal/compiler"
"noxy-vm/internal/lexer"
"noxy-vm/internal/parser"
"noxy-vm/internal/value"
"github.com/estevaofon/noxy/internal/chunk"
"github.com/estevaofon/noxy/internal/compiler"
"github.com/estevaofon/noxy/internal/lexer"
"github.com/estevaofon/noxy/internal/parser"
"github.com/estevaofon/noxy/internal/value"
)

// OpCode.String() e o disassembler (`noxy --disassembly`, `DisassembleAll` no
Expand Down
2 changes: 1 addition & 1 deletion internal/compiler/arith_operand_checks.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package compiler
import (
"fmt"

"noxy-vm/internal/ast"
"github.com/estevaofon/noxy/internal/ast"
)

// Checagem estatica dos operandos de `+ - * / %` e `< > <= >=` (issue #75):
Expand Down
2 changes: 1 addition & 1 deletion internal/compiler/arith_operand_checks_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (
"strings"
"testing"

"noxy-vm/internal/ast"
"github.com/estevaofon/noxy/internal/ast"
)

func TestArithmeticOperandMismatchIsCompileError(t *testing.T) {
Expand Down
6 changes: 3 additions & 3 deletions internal/compiler/borrow_place.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package compiler

import (
"noxy-vm/internal/ast"
"noxy-vm/internal/chunk"
"noxy-vm/internal/value"
"github.com/estevaofon/noxy/internal/ast"
"github.com/estevaofon/noxy/internal/chunk"
"github.com/estevaofon/noxy/internal/value"
)

// O empréstimo como LUGAR (issue #83).
Expand Down
4 changes: 2 additions & 2 deletions internal/compiler/builtin_calls.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ package compiler

import (
"fmt"
"noxy-vm/internal/ast"
"noxy-vm/internal/chunk"
"github.com/estevaofon/noxy/internal/ast"
"github.com/estevaofon/noxy/internal/chunk"
)

func builtinType(name string) ast.NoxyType {
Expand Down
2 changes: 1 addition & 1 deletion internal/compiler/builtin_calls_test.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package compiler

import (
"noxy-vm/internal/chunk"
"github.com/estevaofon/noxy/internal/chunk"
"strings"
"testing"
)
Expand Down
2 changes: 1 addition & 1 deletion internal/compiler/builtin_return_types.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package compiler

import "noxy-vm/internal/ast"
import "github.com/estevaofon/noxy/internal/ast"

// Tipo de retorno estatico dos builtins CENTRAIS (os que existem sem `use`:
// registrados pela VM em defineNatives, sem wrapper tipado na stdlib). Ate a
Expand Down
6 changes: 3 additions & 3 deletions internal/compiler/call_result.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ import (
"fmt"
"strings"

"noxy-vm/internal/ast"
"noxy-vm/internal/chunk"
"noxy-vm/internal/value"
"github.com/estevaofon/noxy/internal/ast"
"github.com/estevaofon/noxy/internal/chunk"
"github.com/estevaofon/noxy/internal/value"
)

// call_result (issue #105 item 2): a fronteira sincrona de erro devolve
Expand Down
8 changes: 4 additions & 4 deletions internal/compiler/compiler.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ package compiler

import (
"fmt"
"noxy-vm/internal/ast"
"noxy-vm/internal/chunk"
"noxy-vm/internal/pkgmanager"
"noxy-vm/internal/value"
"github.com/estevaofon/noxy/internal/ast"
"github.com/estevaofon/noxy/internal/chunk"
"github.com/estevaofon/noxy/internal/pkgmanager"
"github.com/estevaofon/noxy/internal/value"
"path/filepath"
"strings"
)
Expand Down
10 changes: 5 additions & 5 deletions internal/compiler/compiler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ package compiler

import (
"bytes"
"noxy-vm/internal/ast"
"noxy-vm/internal/chunk"
"noxy-vm/internal/lexer"
"noxy-vm/internal/parser"
"noxy-vm/internal/value"
"github.com/estevaofon/noxy/internal/ast"
"github.com/estevaofon/noxy/internal/chunk"
"github.com/estevaofon/noxy/internal/lexer"
"github.com/estevaofon/noxy/internal/parser"
"github.com/estevaofon/noxy/internal/value"
"strings"
"testing"
)
Expand Down
6 changes: 3 additions & 3 deletions internal/compiler/cow_lowering.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ package compiler
import (
"fmt"

"noxy-vm/internal/ast"
"noxy-vm/internal/chunk"
"noxy-vm/internal/value"
"github.com/estevaofon/noxy/internal/ast"
"github.com/estevaofon/noxy/internal/chunk"
"github.com/estevaofon/noxy/internal/value"
)

// compileLValueBase compila a BASE de um lvalue emitindo a cadeia de opcodes
Expand Down
8 changes: 4 additions & 4 deletions internal/compiler/cow_lowering_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ package compiler
import (
"testing"

"noxy-vm/internal/chunk"
"noxy-vm/internal/lexer"
"noxy-vm/internal/parser"
"noxy-vm/internal/value"
"github.com/estevaofon/noxy/internal/chunk"
"github.com/estevaofon/noxy/internal/lexer"
"github.com/estevaofon/noxy/internal/parser"
"github.com/estevaofon/noxy/internal/value"
)

func compileSource(t *testing.T, source string) *chunk.Chunk {
Expand Down
Loading