3 Commits

Author SHA1 Message Date
175105c807 Work with slim instead 2026-06-01 07:07:42 -05:00
dbe5e137fe Work with slim instead 2026-06-01 07:05:19 -05:00
3e5932b2ad Work with slim instead 2026-06-01 07:01:25 -05:00
18 changed files with 467 additions and 39 deletions

View File

@@ -13,23 +13,22 @@ env:
jobs: jobs:
build-crosslang-shell-and-cpkg: build-crosslang-shell-and-cpkg:
runs-on: ubuntu-latest runs-on: arch-builder
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- run: | - run: |
wget -O /root/repository.key https://git.tesses.org/api/packages/tesses50/arch/repository.key
pacman-key --add /root/repository.key
printf "[tesses50.git.tesses.org]\nSigLevel = Optional TrustAll\nServer = https://git.tesses.org/api/packages/tesses50/arch/core/\$arch\n" >> /etc/pacman.conf
pacman --noconfirm -Sy crosslang
cd vscode-extension cd vscode-extension
npm install npm install
npm install -g typescript npm install -g typescript
npm install -g @vscode/vsce npm install -g @vscode/vsce
vsce package vsce package
cd .. cd ..
wget -O /usr/local/bin/crosslang https://redirect.tesses.net/cl-slim-x86_64-linux-musl crosslang int ./build.tcross pack
chmod 755 /usr/local/bin/crosslang crosslang int ./build.tcross install
ln -s /usr/local/bin/crosslang /usr/local/bin/crossc
ln -s /usr/local/bin/crosslang /usr/local/bin/crossint
ln -s /usr/local/bin/crosslang /usr/local/bin/crossvm
crossint ./build.tcross pack
crossint ./build.tcross install
mkdir -p artifacts mkdir -p artifacts
cp Tesses.CrossLang.ShellPackage-*.crvm artifacts/ShellPackage.crvm cp Tesses.CrossLang.ShellPackage-*.crvm artifacts/ShellPackage.crvm
cp Tesses.CrossLang.PackageServer/bin/Tesses.CrossLang.PackageServer-*.crvm artifacts/CPKG.crvm cp Tesses.CrossLang.PackageServer/bin/Tesses.CrossLang.PackageServer-*.crvm artifacts/CPKG.crvm

View File

@@ -1,5 +1,8 @@
## Changelog ## Changelog
## v0.0.3
Work with slim instead
## v0.0.2 ## v0.0.2
Add the templates for npm Add the templates for npm

View File

@@ -6,15 +6,15 @@
# To Build # To Build
```bash ```bash
crossint ./build.tcross crosslang int ./build.tcross
``` ```
# To Install # To Install
```bash ```bash
crossint ./build.tcross install crosslang int ./build.tcross install
``` ```
# To Pack # To Pack
```bash ```bash
crossint ./build.tcross pack crosslang int ./build.tcross pack
``` ```

View File

@@ -27,6 +27,7 @@ class ExpectObj {
this.SetRes(this.left == right, $"{this.left} is not equal to {right}"); this.SetRes(this.left == right, $"{this.left} is not equal to {right}");
} }
} }
public LessThan(right) public LessThan(right)
{ {
if(this.inverted) if(this.inverted)

View File

@@ -0,0 +1,65 @@
class ConcurrentQueue
{
private mtx = new Mutex();
private queue = new Queue();
public Enqueue(val)
{
mtx.Lock();
queue.Enqueue(val);
mtx.Unlock();
}
public Dequeue()
{
mtx.Lock();
const val = queue.Dequeue();
mtx.Unlock();
return val;
}
public Peek()
{
mtx.Lock();
const val = queue.Peek();
mtx.Unlock();
return val;
}
public getCount()
{
mtx.Lock();
const val = queue.Count;
mtx.Unlock();
return val;
}
public getLength()
{
mtx.Lock();
const val = queue.Length;
mtx.Unlock();
return val;
}
public ToList()
{
mtx.Lock();
const ittr = new Queryable(queue);
const ls = ittr.ToList();
mtx.Unlock();
return ls;
}
public GetEnumerator()
{
return ToList().GetEnumerator();
}
}

View File

@@ -0,0 +1,65 @@
class ConcurrentStack
{
private mtx = new Mutex();
private stack = new Stack();
public Push(val)
{
mtx.Lock();
stack.Push(val);
mtx.Unlock();
}
public Pop()
{
mtx.Lock();
const val = stack.Pop();
mtx.Unlock();
return val;
}
public Top()
{
mtx.Lock();
const val = stack.Top();
mtx.Unlock();
return val;
}
public getCount()
{
mtx.Lock();
const val = stack.Count;
mtx.Unlock();
return val;
}
public getLength()
{
mtx.Lock();
const val = stack.Length;
mtx.Unlock();
return val;
}
public ToList()
{
mtx.Lock();
const ittr = new Queryable(stack);
const ls = ittr.ToList();
mtx.Unlock();
return ls;
}
public GetEnumerator()
{
return ToList().GetEnumerator();
}
}

View File

@@ -0,0 +1,32 @@
class Queue
{
private items = [];
public Enqueue(val)
{
items.Add(val);
}
public Dequeue()
{
if(items.Count == 0) return null;
const val = items[0];
items.RemoveAt(0);
return val;
}
public Peek()
{
if(items.Count == 0) return null;
return items[0];
}
public GetEnumerator()
{
return items.GetEnumerator();
}
public getCount() items.Count;
public getLength() items.Length;
}

View File

@@ -0,0 +1,24 @@
func SequenceEquals(a,b)
{
const ittra = a.GetEnumerator();
const ittrb = b.GetEnumerator();
defer {
ittra.Dispose();
ittrb.Dispose();
}
while(true) {
const hasa = ittra.MoveNext();
const hasb = ittrb.MoveNext();
if(hasa != hasb) return false;
if(hasa)
{
if(!(hasa.Current == hasb.Current)) return false;
}
else break;
}
return true;
}

View File

@@ -0,0 +1,33 @@
class Stack
{
private items = [];
public Push(val)
{
items.Insert(0, val);
}
public Pop()
{
if(items.Count == 0) return null;
const val = items[0];
items.RemoveAt(0);
return val;
}
public Top()
{
if(items.Count == 0) return null;
return items[0];
}
public getCount() items.Count;
public getLength() items.Length;
public GetEnumerator()
{
return items.GetEnumerator();
}
}

View File

@@ -0,0 +1,48 @@
class Event {
private mtx = new Mutex();
private cb = [];
public Event()
{
}
public Invoke(sender,e)
{
mtx.Lock();
each(var item : cb)
{
item(sender,e);
}
mtx.Unlock();
}
public Subscribe(val)
{
mtx.Lock();
cb.Add(val);
mtx.Unlock();
}
public Unsubscribe(val)
{
mtx.Lock();
cb.Remove(val);
mtx.Unlock();
}
public operator+(val)
{
mtx.Lock();
cb.Add(val);
mtx.Unlock();
return this;
}
public operator-(val)
{
mtx.Lock();
cb.Remove(val);
mtx.Unlock();
return this;
}
}

View File

@@ -10,7 +10,7 @@ class Exception
public ToString() public ToString()
{ {
var messagePart = $"{Class.Name(this)}: {Message}"; var messagePart = $"{Class.Name(this)}: {this.Message}";
if(InnerException != undefined && InnerException != null) if(InnerException != undefined && InnerException != null)
{ {
var innerEx = InnerException.ToString().Replace("\n","\n\t"); var innerEx = InnerException.ToString().Replace("\n","\n\t");
@@ -18,12 +18,4 @@ class Exception
} }
return messagePart; return messagePart;
} }
}
class OutOfRangeException : Exception
{
public OutOfRangeException(varName,$inner)
{
Exception($"{varName} is out of range.",inner);
}
} }

View File

@@ -0,0 +1,7 @@
class OutOfRangeException : Exception
{
public OutOfRangeException(varName,$inner)
{
Exception($"{varName} is out of range.",inner);
}
}

View File

@@ -0,0 +1,42 @@
class ExecutorQueue {
private mtx = new Mutex();
private items = [];
private thread;
private running=true;
public ExecutorQueue()
{
thread = new Thread(()=>{
while(running)
{
mtx.Lock();
if(items.Count == 0)
{
mtx.Unlock();
continue;
}
const item = items[0];
items.RemoveAt(0);
mtx.Unlock();
if(TypeIsCallable(item))
item();
}
});
}
public EnqueueJob(cb)
{
mtx.Lock();
items.Add(cb);
mtx.Unlock();
}
public Dispose()
{
mtx.Lock();
running=false;
mtx.Unlock();
thread.Join();
}
}

View File

@@ -0,0 +1,12 @@
func FuncWithThis(
function,
thisVal
)
{
return ($$args)=>{
const newArgs = [thisVal];
each(var item : args) newArgs.Add(item);
return function.Call(newArgs);
};
}

View File

@@ -0,0 +1,19 @@
class MutexLock
{
private mtx;
public MutexLock(mtx)
{
this.mtx = mtx;
mtx.Lock();
}
public Dispose()
{
mtx.Unlock();
}
}
func Lock(mtx)
{
return new MutexLock(mtx);
}

View File

@@ -0,0 +1,39 @@
class Result {
private isError=false;
private value=null;
public Result(value, isError)
{
this.value = value;
this.isError = isError;
}
static Error(value)
{
return new Result(value,true);
}
static OK(value)
{
return new Result(value,false);
}
public getIsError()
{
return this.isError;
}
public getValue()
{
return this.value;
}
public Unwrap()
{
if(isError) throw value;
return value;
}
}

View File

@@ -0,0 +1,48 @@
Test("Collections",()=>{
Spec("SequenceEquals",()=>{
enumerable func myenum()
{
yield 42;
yield 69;
yield 128;
yield "Hello";
}
Assert(SequenceEquals("MyString",['M','y','S','t','r','i','n','g']), "SequenceEquals is not functioning correctly, String MyString and array with same chars should return true");
Assert(SequenceEquals(myenum(), [42,69,128,"Hello"]), "SequenceEquals is not functioning correctly, enumerable and list should return same result");
});
Spec("Queue", ()=>{
const queue = new Queue();
queue.Enqueue("Apple");
queue.Enqueue(37);
Assert(!TypeIsDefined(queue.Enqueue("My String")), "Queue.Enqueue should not return value, but it does");
Expect(queue.Dequeue()).ToBe("Apple");
Expect(queue.Peek()).LessThan(42);
Expect(queue.Count).ToBe(2);
queue.Dequeue();
Expect(queue.Count).ToBe(1);
queue.Enqueue(4);
queue.Enqueue(5);
queue.Enqueue(true);
Assert(SequenceEquals(queue,["My String",4,5,true]), "Queue isn't working correctly");
});
Spec("Stack", ()=>{
const stack = new Stack();
Assert(!TypeIsDefined(stack.Push(42)),"Stack.Push should not return a value, but it does");
stack.Push(59);
Expect(stack.Count).ToBe(2);
Expect(stack.Pop()).ToBe(59);
Expect(stack.Top()).ToBe(42);
Expect(stack.Pop()).ToBe(42);
});
});

View File

@@ -14,7 +14,7 @@ func cmd(name, args)
func main(args) func main(args)
{ {
var args2=["-o","./Tesses.CrossLang.BuildEssentials/bin-tmp","-r","./Tesses.CrossLang.BuildEssentials/res","-n","Tesses.CrossLang.BuildEssentials","-v","1.0.0.0-dev","Tesses.CrossLang.BuildEssentials/main.tcross"]; var args2=["c","-o","./Tesses.CrossLang.BuildEssentials/bin-tmp","-r","./Tesses.CrossLang.BuildEssentials/res","-n","Tesses.CrossLang.BuildEssentials","-v","1.0.0.0-dev","Tesses.CrossLang.BuildEssentials/main.tcross"];
each(var f : FS.Local.EnumeratePaths("./Tesses.CrossLang.BuildEssentials/src")) each(var f : FS.Local.EnumeratePaths("./Tesses.CrossLang.BuildEssentials/src"))
{ {
if(f.GetExtension() == ".tcross") if(f.GetExtension() == ".tcross")
@@ -25,38 +25,37 @@ func main(args)
cmd("crossc", args2); cmd("crosslang", args2);
cmd("crossvm",["./Tesses.CrossLang.BuildEssentials/bin-tmp/Tesses.CrossLang.BuildEssentials-1.0.0.0-dev.crvm","Tesses.CrossLang.Shell"]); cmd("crosslang",["vm","./Tesses.CrossLang.BuildEssentials/bin-tmp/Tesses.CrossLang.BuildEssentials-1.0.0.0-dev.crvm","Tesses.CrossLang.Shell"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Tesses.CrossLang.PackageServer"]); cmd("crosslang",["vm","./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Tesses.CrossLang.PackageServer"]);
//cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Tesses.CrossLang.WebSite"]); cmd("crosslang",["vm","./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Tesses.CrossLang.Std"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Tesses.CrossLang.Std"]); cmd("crosslang",["vm","./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Templates/console"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Templates/console"]); cmd("crosslang",["vm","./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Templates/emptyweb"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Templates/emptyweb"]); cmd("crosslang",["vm","./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Templates/web"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Templates/web"]); cmd("crosslang",["vm","./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Templates/template"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Templates/template"]); cmd("crosslang",["vm","./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Templates/lib"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Templates/lib"]); cmd("crosslang",["vm","./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Templates/compiletool"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Templates/compiletool"]); cmd("crosslang",["vm","./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Templates/tool"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Templates/tool"]); cmd("crosslang",["vm","./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Templates/webapp"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Templates/webapp"]); cmd("crosslang",["vm","./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Templates/npmweb"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Templates/npmweb"]); cmd("crosslang",["vm","./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Templates/npmwebapp"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Templates/npmwebapp"]);
/* /*
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Tesses.CrossLang.PackageServer"]); cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Tesses.CrossLang.PackageServer"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Tesses.CrossLang.PackageServer"]); cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Tesses.CrossLang.PackageServer"]);
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Tesses.CrossLang.PackageServer"]); cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","Tesses.CrossLang.PackageServer"]);
*/ */
cmd("crossvm",["./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","crosslang_shell_archive_maker"]); cmd("crosslang",["vm","./Tesses.CrossLang.Shell/bin/Tesses.CrossLang.Shell-1.0.0.0-dev.crvm","build","crosslang_shell_archive_maker"]);
if(args.Length > 1) if(args.Length > 1)
{ {
if(args[1] == "install") if(args[1] == "install")
{ {
cmd("crossvm",["crosslang_shell_archive_maker/bin/crosslang_shell_archive_maker-1.0.0.0-dev.crvm", "install"]); cmd("crosslang",["vm","crosslang_shell_archive_maker/bin/crosslang_shell_archive_maker-1.0.0.0-dev.crvm", "install"]);
} }
else if(args[1] == "pack") else if(args[1] == "pack")
{ {
cmd("crossvm",["crosslang_shell_archive_maker/bin/crosslang_shell_archive_maker-1.0.0.0-dev.crvm"]); cmd("crosslang",["vm","crosslang_shell_archive_maker/bin/crosslang_shell_archive_maker-1.0.0.0-dev.crvm"]);
} }
} }
} }