Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
dcc7877
doc & presentation update
Da-Buche Sep 23, 2025
07d2c59
typo
Da-Buche Sep 29, 2025
4e8ab02
presentation slides update
Da-Buche Sep 29, 2025
660a3b8
lint now reports global definitions properly. (except for classes)
Da-Buche Sep 30, 2025
f7484e7
fix spec
Da-Buche Sep 30, 2025
f2bc62e
`@globals` function now takes ?load_files arguments to use Lint or `g…
Da-Buche Oct 1, 2025
1338811
temp fix
Da-Buche Oct 1, 2025
fcdae47
Add rule about debugging functions in native Lint
Da-Buche Oct 1, 2025
b62d8ea
`sharp test` now reports untested functions
Da-Buche Oct 1, 2025
92cb2bd
Add tests.
Da-Buche Oct 6, 2025
6db7e6c
added test to utils
Da-Buche Oct 6, 2025
a20cb51
bracket fix
Da-Buche Oct 6, 2025
6ffe780
Fix missing prop
Da-Buche Oct 7, 2025
8f2478e
fix ncat for unix
Da-Buche Oct 7, 2025
92f62ee
Added Lint script
Oct 8, 2025
62f3c58
Added example
Da-Buche Oct 9, 2025
8ac1bcd
fix foldl1_let
Da-Buche Oct 9, 2025
d84c957
Replace legacy `xor` by `@xor`
Da-Buche Oct 9, 2025
688e04c
comment unused functions
Da-Buche Oct 9, 2025
8212ac8
remove legacy calls
Da-Buche Oct 9, 2025
aa98e9b
update `@letf` so it works better with `status optimizeTailCall`
Da-Buche Oct 9, 2025
cf7791a
remove legacy calls
Da-Buche Oct 9, 2025
9a78e19
Add missing tests
Da-Buche Oct 9, 2025
cbc47d9
make sure `@queue` recovers when it breaks
Da-Buche Oct 9, 2025
f756513
fix `@letf`
Da-Buche Oct 9, 2025
651795d
skip hidden function from untested report
Da-Buche Oct 9, 2025
aa01f36
Add missing tests
Da-Buche Oct 10, 2025
a18d773
All global functions are now tested.
Da-Buche Oct 10, 2025
11c87d4
Merge branch 'main' into dev
Da-Buche Oct 10, 2025
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
28 changes: 19 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<!---
Generated using https://www.asciiart.eu/text-to-ascii-art

Modified version below but it dow not appear properly on all browsers...
Modified version below but it does not appear properly on all browsers...
<pre style='font-family: "Courier New", Courier, monospace; line-height: 0.567;'>
◥■■■■■■■◣ ◥■■◣ ◥■■◣ ◥■■◣ ◥■■◣ ◥■■◣ ◥■■◣ ◥■■◣
◥■■◣░░░░ ◥■■◣◢■■◤ ◥■■◣ ◥■■◣ ◥■■◣ ◥■■■■■■■■■■■■■■■◣
Expand All @@ -33,21 +33,29 @@ Cadence SKILL++ Enhanced Framework
SKILL# offers out-of-the-box tools for novice users, including:

- Advanced Lint rules
- Code formatting
- Code formatting (#TODO)

For advanced users, it also provides:

- Unit-Testing Framework
- Documentation Generation
- Fully Specified, Documented and Tested API
- Macros to target design patterns and reduce human error
- On-Demand (lazy or strict) Type-Checking
- Automatic Documentation Generation
- Specified, Documented and Tested API


## Requirements
SKILL# mostly relies on `$CDS_INST_DIR/tools.lnx86/dfII/bin/skill` interpreter.

### To Use

SKILL# mostly relies on `$CDS_INST_DIR/tools.lnx86/dfII/bin/skill` interpreter.
Of course it also works within Virtuoso.

**If Virtuoso is installed and `$CDS_INST_DIR` is defined, everything should work fine.**
> [!NOTE]
>
> If Virtuoso is installed and `$CDS_INST_DIR` is defined, everything should work fine.

### To Develop

For development and testing, SKILL# relies on Open-Source projects:

Expand All @@ -71,9 +79,11 @@ The `bin/sharp` utility provides the following commands:
| `sharp globals` | Load files from provided paths and report global definitions. |
| `sharp docgen` | Load files from provided paths and print associated `.fnd` documentation. |
| `sharp format` | Pretty print the contents of files from provided paths. #TODO |
<!---
| `sharp blunt` | Print files from provided paths without SKILL# dependencies. #TODO |
-->

> **_NOTE:_**
> [!NOTE]
>
> _"files from provided paths"_ refers to `{.il, .ils, .scm}` files found using `find` on all paths provided as arguments (files or directories).
>
Expand All @@ -86,7 +96,7 @@ To enable the full SKILL# API inside Virtuoso, load the following command or pla
(load (simplifyFilename "$SKILL_SHARP_ROOT/skill/loader.scm"))
```

> **_NOTE:_**
> [!NOTE]
>
> Replace $SKILL_SHARP_ROOT with the path to this repository's root directory.

Expand Down Expand Up @@ -120,7 +130,7 @@ SKILL# provides two ways to waive lint rules:
(@no_lint (car (setof elt (list 1 2 3) (evenp elt))))
```

> **_NOTE:_**
> [!NOTE]
>
> It is often better to waive warnings instead of degrading valid code to make it compliant.

Expand Down
11 changes: 9 additions & 2 deletions bin/tcp_client
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,13 @@ fi
## Check if CSV file exists
[[ -f "$CSV_FILE" ]] || error "Error: CSV file '$CSV_FILE' not found."

## Support Mac & Unix versions of ncat
if ncat --version 1>/dev/null 2>/dev/null; then
NCAT="ncat"
else
NCAT="nc"
fi

## =======================================================
## Clean server file
## =======================================================
Expand All @@ -75,7 +82,7 @@ clean_file() {
head -n1 "$CSV_FILE"
while IFS=, read -r TIMESTAMP HOST PORT PASSWORD LANGUAGE PROJECT CONFIG; do
## Make sure output from a dummy request is valid
response=$(echo '"Is server alive?"' | gpg --symmetric --cipher-algo AES256 --passphrase "$PASSWORD" --batch --yes 2>/dev/null | nc -w5 "$HOST" "$PORT" 2>/dev/null)
response=$(echo '"Is server alive?"' | gpg --symmetric --cipher-algo AES256 --passphrase "$PASSWORD" --batch --yes 2>/dev/null | "$NCAT" -w5 "$HOST" "$PORT" 2>/dev/null)
# Check if response contains 'alive'
if echo "$response" | grep -q "alive"; then
echo "$TIMESTAMP,$HOST,$PORT,$PASSWORD,$LANGUAGE,$PROJECT,$CONFIG"
Expand Down Expand Up @@ -133,7 +140,7 @@ PASSWORD=$(echo "$PASSWORD" | xargs)
## =======================================================

## Encrypt stdin with GPG and forward to server via netcat
gpg --symmetric --cipher-algo AES256 --passphrase "$PASSWORD" --batch --yes | nc "$HOST" "$PORT"
gpg --symmetric --cipher-algo AES256 --passphrase "$PASSWORD" --batch --yes | "$NCAT" "$HOST" "$PORT"

exit 0

Loading