Skip to content

Commit e9af26e

Browse files
committed
FALCON v1.5.13
0 parents  commit e9af26e

File tree

110 files changed

+25344
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

110 files changed

+25344
-0
lines changed

.gitattributes

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Auto detect text files and perform LF normalization
2+
* text=auto

.github/workflows/build.yml

Lines changed: 190 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,190 @@
1+
name: CI
2+
3+
# Roda em todo push/PR para verificar compilação.
4+
# Em push na main com vN.N.N na mensagem: empacota binários e cria nova release.
5+
6+
on:
7+
push:
8+
pull_request:
9+
workflow_dispatch:
10+
11+
permissions:
12+
contents: write
13+
14+
concurrency:
15+
group: ci-${{ github.ref }}
16+
cancel-in-progress: true
17+
18+
jobs:
19+
# ────────────────────────────────────────────────────────
20+
# 1. Build (todos os targets, todos os pushes/PRs)
21+
# ────────────────────────────────────────────────────────
22+
build:
23+
name: Build (${{ matrix.target }})
24+
runs-on: ${{ matrix.os }}
25+
26+
strategy:
27+
fail-fast: false
28+
matrix:
29+
include:
30+
- os: windows-latest
31+
target: x86_64-pc-windows-msvc
32+
bin: falconasm.exe
33+
archive: falconasm-windows-x86_64.zip
34+
35+
- os: ubuntu-latest
36+
target: x86_64-unknown-linux-gnu
37+
bin: falconasm
38+
archive: falconasm-linux-x86_64.tar.gz
39+
40+
- os: macos-latest
41+
target: x86_64-apple-darwin
42+
bin: falconasm
43+
archive: falconasm-macos-x86_64.tar.gz
44+
45+
- os: macos-latest
46+
target: aarch64-apple-darwin
47+
bin: falconasm
48+
archive: falconasm-macos-aarch64.tar.gz
49+
50+
steps:
51+
- uses: actions/checkout@v4
52+
53+
- uses: dtolnay/rust-toolchain@stable
54+
with:
55+
targets: ${{ matrix.target }}
56+
57+
# rfd precisa de GTK3 no Linux (file dialogs)
58+
- name: Install Linux build tools
59+
if: runner.os == 'Linux'
60+
run: sudo apt-get update && sudo apt-get install -y pkg-config libgtk-3-dev
61+
62+
- name: Build
63+
run: cargo build --release --target ${{ matrix.target }}
64+
65+
# Só empacota quando for push na main
66+
- name: Package (Windows)
67+
if: github.ref == 'refs/heads/main' && runner.os == 'Windows'
68+
shell: pwsh
69+
run: Compress-Archive "target/${{ matrix.target }}/release/${{ matrix.bin }}" "${{ matrix.archive }}"
70+
71+
- name: Package (Unix)
72+
if: github.ref == 'refs/heads/main' && runner.os != 'Windows'
73+
run: |
74+
tar -czf "${{ matrix.archive }}" \
75+
-C "target/${{ matrix.target }}/release" "${{ matrix.bin }}"
76+
77+
- uses: actions/upload-artifact@v4
78+
if: github.ref == 'refs/heads/main'
79+
with:
80+
name: dist-${{ matrix.target }}
81+
path: ${{ matrix.archive }}
82+
if-no-files-found: error
83+
84+
# ────────────────────────────────────────────────────────
85+
# 2. Verifica se a mensagem do commit contém vN.N.N
86+
# ────────────────────────────────────────────────────────
87+
check-release:
88+
name: Check release trigger
89+
runs-on: ubuntu-latest
90+
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
91+
outputs:
92+
should_release: ${{ steps.check.outputs.should_release }}
93+
steps:
94+
- name: Check commit message for vN.N.N
95+
id: check
96+
run: |
97+
MSG="${{ github.event.head_commit.message }}"
98+
if echo "$MSG" | grep -qE 'v[0-9]+\.[0-9]+\.[0-9]+'; then
99+
echo "should_release=true" >> "$GITHUB_OUTPUT"
100+
echo "Release trigger found in: $MSG"
101+
else
102+
echo "should_release=false" >> "$GITHUB_OUTPUT"
103+
echo "No vN.N.N found — skipping release"
104+
fi
105+
106+
# ────────────────────────────────────────────────────────
107+
# 3. Auto-versioned release (só se check-release aprovado)
108+
# Lê a última tag vX.Y.Z, incrementa Z e cria nova release
109+
# ────────────────────────────────────────────────────────
110+
versioned-release:
111+
name: Create versioned release
112+
runs-on: ubuntu-latest
113+
needs: [build, check-release]
114+
if: needs.check-release.outputs.should_release == 'true'
115+
116+
steps:
117+
- uses: actions/checkout@v4
118+
with:
119+
fetch-depth: 0 # precisa de todas as tags
120+
121+
- uses: actions/download-artifact@v4
122+
with:
123+
pattern: dist-*
124+
path: dist
125+
merge-multiple: true
126+
127+
- name: SHA256 checksums
128+
run: cd dist && sha256sum * > SHA256SUMS.txt
129+
130+
- name: Read changelog
131+
id: changelog
132+
run: |
133+
# Extrai a primeira seção do CHANGELOG.md (entre o primeiro ## e o segundo ##)
134+
NOTES=$(awk '/^## /{if(found){exit} found=1; next} found{print}' CHANGELOG.md)
135+
{
136+
echo "notes<<__CHANGELOG_EOF__"
137+
echo "$NOTES"
138+
echo "__CHANGELOG_EOF__"
139+
} >> "$GITHUB_OUTPUT"
140+
141+
- name: Compute next tag
142+
id: next_tag
143+
run: |
144+
# Pega a última tag vX.Y.Z (ignora "latest" e outras)
145+
LATEST=$(git tag --list 'v[0-9]*.[0-9]*.[0-9]*' \
146+
--sort=-version:refname | head -n1)
147+
148+
if [ -z "$LATEST" ]; then
149+
NEXT="v0.0.1"
150+
else
151+
# Extrai major, minor, patch
152+
IFS='.' read -r MAJOR MINOR PATCH <<< "${LATEST#v}"
153+
PATCH=$((PATCH + 1))
154+
NEXT="v${MAJOR}.${MINOR}.${PATCH}"
155+
fi
156+
157+
echo "tag=$NEXT" >> "$GITHUB_OUTPUT"
158+
echo "Next release tag: $NEXT"
159+
160+
- name: Create and push tag
161+
run: |
162+
git config user.name "github-actions[bot]"
163+
git config user.email "github-actions[bot]@users.noreply.github.com"
164+
git tag "${{ steps.next_tag.outputs.tag }}"
165+
git push origin "${{ steps.next_tag.outputs.tag }}"
166+
167+
- name: Publish release
168+
uses: softprops/action-gh-release@v2
169+
with:
170+
tag_name: ${{ steps.next_tag.outputs.tag }}
171+
name: "${{ steps.next_tag.outputs.tag }}"
172+
prerelease: false
173+
make_latest: true
174+
files: dist/*
175+
generate_release_notes: false
176+
body: |
177+
${{ steps.changelog.outputs.notes }}
178+
179+
---
180+
181+
| Platform | Download |
182+
|---|---|
183+
| Windows x64 | `falconasm-windows-x86_64.zip` |
184+
| Linux x64 | `falconasm-linux-x86_64.tar.gz` |
185+
| macOS x64 | `falconasm-macos-x86_64.tar.gz` |
186+
| macOS ARM64 (Apple Silicon) | `falconasm-macos-aarch64.tar.gz` |
187+
188+
SHA256 de todos os arquivos em `SHA256SUMS.txt`.
189+
190+
> build [`${{ github.sha }}`](https://github.com/${{ github.repository }}/commit/${{ github.sha }})

.github/workflows/deploy.yml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
name: Deploy to GitHub Pages
2+
3+
on:
4+
push:
5+
branches: [ "main" ]
6+
paths:
7+
- "website/**"
8+
workflow_dispatch:
9+
10+
permissions:
11+
contents: read
12+
pages: write
13+
id-token: write
14+
15+
concurrency:
16+
group: "pages"
17+
cancel-in-progress: true
18+
19+
jobs:
20+
deploy:
21+
runs-on: ubuntu-latest
22+
environment:
23+
name: github-pages
24+
url: ${{ steps.deployment.outputs.page_url }}
25+
26+
steps:
27+
- name: Checkout
28+
uses: actions/checkout@v4
29+
30+
# Empacota o conteúdo que vai pro Pages
31+
- name: Upload Pages artifact
32+
uses: actions/upload-pages-artifact@v3
33+
with:
34+
path: ./website
35+
36+
# Faz o deploy no Pages
37+
- name: Deploy to GitHub Pages
38+
id: deployment
39+
uses: actions/deploy-pages@v4
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
name: Build Release Artifacts
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
tags:
7+
- "v*"
8+
9+
permissions:
10+
contents: write
11+
12+
concurrency:
13+
group: release-${{ github.ref }}
14+
cancel-in-progress: true
15+
16+
jobs:
17+
build:
18+
name: Build & package (${{ matrix.target }})
19+
runs-on: ${{ matrix.os }}
20+
21+
strategy:
22+
fail-fast: false
23+
matrix:
24+
include:
25+
- os: windows-latest
26+
target: x86_64-pc-windows-msvc
27+
kind: windows
28+
bin: falconasm.exe
29+
30+
- os: ubuntu-latest
31+
target: x86_64-unknown-linux-gnu
32+
kind: unix
33+
bin: falconasm
34+
35+
- os: macos-latest
36+
target: x86_64-apple-darwin
37+
kind: unix
38+
bin: falconasm
39+
40+
- os: macos-latest
41+
target: aarch64-apple-darwin
42+
kind: unix
43+
bin: falconasm
44+
45+
steps:
46+
- uses: actions/checkout@v4
47+
48+
- name: Install Rust
49+
uses: dtolnay/rust-toolchain@stable
50+
with:
51+
targets: ${{ matrix.target }}
52+
53+
- name: Install Linux build tools
54+
if: runner.os == 'Linux'
55+
run: sudo apt-get update && sudo apt-get install -y pkg-config libgtk-3-dev
56+
57+
- name: Build
58+
run: cargo build --release --target ${{ matrix.target }}
59+
60+
- name: Package (Windows)
61+
if: matrix.kind == 'windows'
62+
shell: pwsh
63+
run: |
64+
New-Item -ItemType Directory -Force release-artifacts | Out-Null
65+
Compress-Archive "target/${{ matrix.target }}/release/${{ matrix.bin }}" "release-artifacts/falconasm-${{ matrix.target }}.zip"
66+
67+
- name: Package (Unix)
68+
if: matrix.kind == 'unix'
69+
run: |
70+
mkdir -p release-artifacts
71+
tar -czf "release-artifacts/falconasm-${{ matrix.target }}.tar.gz" \
72+
-C "target/${{ matrix.target }}/release" "${{ matrix.bin }}"
73+
74+
- uses: actions/upload-artifact@v4
75+
with:
76+
name: release-${{ matrix.target }}
77+
path: release-artifacts/*
78+
if-no-files-found: error
79+
80+
release:
81+
name: Publish GitHub Release
82+
runs-on: ubuntu-latest
83+
needs: build
84+
if: startsWith(github.ref, 'refs/tags/')
85+
86+
steps:
87+
- uses: actions/download-artifact@v4
88+
with:
89+
pattern: release-*
90+
path: release-dist
91+
merge-multiple: true
92+
93+
- name: Generate SHA256
94+
run: cd release-dist && sha256sum * > SHA256SUMS.txt
95+
96+
- name: Publish Release
97+
uses: softprops/action-gh-release@v2
98+
with:
99+
files: release-dist/*
100+
generate_release_notes: true

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
/target
2+
# Ignore generated distribution artifacts
3+
/dist/
4+
5+
# Ignore local assignment/note files
6+
/atividade_final_falcon_asm*

.vscode/c_cpp_properties.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"configurations": [
3+
{
4+
"name": "windows-gcc-x64",
5+
"includePath": [
6+
"${workspaceFolder}/**"
7+
],
8+
"compilerPath": "C:/ProgramData/mingw64/mingw64/bin/gcc.exe",
9+
"cStandard": "${default}",
10+
"cppStandard": "${default}",
11+
"intelliSenseMode": "windows-gcc-x64",
12+
"compilerArgs": [
13+
""
14+
]
15+
}
16+
],
17+
"version": 4
18+
}

.vscode/extensions.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"recommendations": [
3+
"anthropic.claude-code"
4+
]
5+
}

.vscode/launch.json

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"version": "0.2.0",
3+
"configurations": [
4+
{
5+
"name": "C/C++ Runner: Debug Session",
6+
"type": "cppdbg",
7+
"request": "launch",
8+
"args": [],
9+
"stopAtEntry": false,
10+
"externalConsole": true,
11+
"cwd": "c:/Users/gaok1/Documents/GitHub/FALCON-ASM/src",
12+
"program": "c:/Users/gaok1/Documents/GitHub/FALCON-ASM/src/build/Debug/outDebug",
13+
"MIMode": "gdb",
14+
"miDebuggerPath": "gdb",
15+
"setupCommands": [
16+
{
17+
"description": "Enable pretty-printing for gdb",
18+
"text": "-enable-pretty-printing",
19+
"ignoreFailures": true
20+
}
21+
]
22+
}
23+
]
24+
}

0 commit comments

Comments
 (0)