mirror of
https://github.com/Lore09/Tesi-Magistrale.git
synced 2025-12-19 12:24:31 +00:00
removing old parser
This commit is contained in:
@@ -1,19 +0,0 @@
|
|||||||
@Task
|
|
||||||
@LibDeps("stdio.h","stdlib.h")
|
|
||||||
float get_average_rand(float values[]){
|
|
||||||
return 5;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ModuleName("Tattitto")
|
|
||||||
@TaskCloud
|
|
||||||
@LibDeps("math.h")
|
|
||||||
int is_even(int number){
|
|
||||||
if(number%2==0)return 1;
|
|
||||||
else return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@LibDeps("stdio.h","string.h")
|
|
||||||
@TaskDevice
|
|
||||||
void printaaaa(String text){
|
|
||||||
printf("aaaa %s\n",text);
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
# Running as native wasm runtime
|
|
||||||
FROM scratch
|
|
||||||
|
|
||||||
COPY ./build/server.wasm .
|
|
||||||
|
|
||||||
EXPOSE 8080
|
|
||||||
|
|
||||||
CMD ["./server.wasm"]
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
container_build: go_build
|
|
||||||
docker build --platform wasi/wasm -t rpc-go-wasm .
|
|
||||||
|
|
||||||
go_build: generate
|
|
||||||
GOOS=wasip1 GOARCH=wasm go build -o build/server.wasm server/main.go
|
|
||||||
|
|
||||||
generate:
|
|
||||||
protoc --proto_path=proto proto/*.proto --go_out=. --go-grpc_out=.
|
|
||||||
Binary file not shown.
@@ -1,15 +0,0 @@
|
|||||||
module thesis/rpc_go
|
|
||||||
|
|
||||||
go 1.23.2
|
|
||||||
|
|
||||||
require (
|
|
||||||
google.golang.org/grpc v1.67.1
|
|
||||||
google.golang.org/protobuf v1.35.1
|
|
||||||
)
|
|
||||||
|
|
||||||
require (
|
|
||||||
golang.org/x/net v0.28.0 // indirect
|
|
||||||
golang.org/x/sys v0.24.0 // indirect
|
|
||||||
golang.org/x/text v0.17.0 // indirect
|
|
||||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect
|
|
||||||
)
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
|
||||||
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
|
||||||
golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE=
|
|
||||||
golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg=
|
|
||||||
golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg=
|
|
||||||
golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
|
||||||
golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc=
|
|
||||||
golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
|
|
||||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 h1:e7S5W7MGGLaSu8j3YjdezkZ+m1/Nm0uRVRMEMGk26Xs=
|
|
||||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
|
|
||||||
google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E=
|
|
||||||
google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA=
|
|
||||||
google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA=
|
|
||||||
google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
## Appunti
|
|
||||||
|
|
||||||
Tinygo per compilare go files in wasi. Non è possibile utilizzarlo con Grpc perché non supporta la libreria "net/http"
|
|
||||||
|
|
||||||
docker build --platform wasi/wasm -t rpc-go-wasm .
|
|
||||||
docker run --runtime=io.containerd.wasmedge.v1 --platform=wasi/wasm rpc-go-wasm
|
|
||||||
|
|
||||||
Provato anche con wasip2, tuttora non supporta l'apertura di socket
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
|
|
||||||
import ast
|
|
||||||
|
|
||||||
def __get_include_from_annotation(libdeps):
|
|
||||||
|
|
||||||
result = ""
|
|
||||||
|
|
||||||
for lib in libdeps:
|
|
||||||
result += f"#include <{lib}>\n"
|
|
||||||
|
|
||||||
return result
|
|
||||||
|
|
||||||
def __get_main_function_from_function(fun):
|
|
||||||
|
|
||||||
main_function = f"""
|
|
||||||
int main() {{
|
|
||||||
|
|
||||||
{fun['name']}({', '.join(['0' for _ in fun['args'].split(',')])});
|
|
||||||
return 0;
|
|
||||||
}}\n
|
|
||||||
"""
|
|
||||||
return main_function
|
|
||||||
|
|
||||||
def get_code_from_function(fun):
|
|
||||||
|
|
||||||
# Get the function content
|
|
||||||
function_content = f"{fun['return_type']} {fun['name']}({fun['args']}) {fun['content']}"
|
|
||||||
|
|
||||||
# Get the main function
|
|
||||||
main_function = __get_main_function_from_function(fun)
|
|
||||||
|
|
||||||
# Get the dependencies from the annotations
|
|
||||||
libdeps = ""
|
|
||||||
for ann in fun['annotations']:
|
|
||||||
if ann['tag'] == "@LibDeps":
|
|
||||||
libdeps= ast.literal_eval(ann['args'])
|
|
||||||
break
|
|
||||||
|
|
||||||
# Get the include statements
|
|
||||||
include_statements = __get_include_from_annotation(libdeps=libdeps)
|
|
||||||
|
|
||||||
return include_statements + '\n' + function_content + '\n' + main_function
|
|
||||||
|
|
||||||
def build_code_from_functions(functions):
|
|
||||||
|
|
||||||
for fun in functions:
|
|
||||||
fun["code"] = get_code_from_function(fun)
|
|
||||||
@@ -1,89 +0,0 @@
|
|||||||
import os
|
|
||||||
import re
|
|
||||||
import yaml
|
|
||||||
|
|
||||||
def __extract_functions(file_content):
|
|
||||||
|
|
||||||
# Regular expression to match C function definitions
|
|
||||||
REGULAR_EXPRESSION_C = r"(^\w[\w\s\*]+)\s+(\w+)\s*\(([^)]*)\)\s*(\{[^{}]*\})"
|
|
||||||
REGULAR_EXPRESSION_ANNOTATION = r"(^\@[A-Z]\w+){1}(\(.+\))*"
|
|
||||||
|
|
||||||
|
|
||||||
function_pattern = re.compile(REGULAR_EXPRESSION_C, re.MULTILINE)
|
|
||||||
function_matches = function_pattern.finditer(file_content)
|
|
||||||
|
|
||||||
annotation_pattern = re.compile(REGULAR_EXPRESSION_ANNOTATION, re.MULTILINE)
|
|
||||||
|
|
||||||
functions = []
|
|
||||||
positions = []
|
|
||||||
|
|
||||||
for match in function_matches:
|
|
||||||
positions.append(match.start())
|
|
||||||
annotation_matches = annotation_pattern.finditer(file_content)
|
|
||||||
prev = 0
|
|
||||||
|
|
||||||
if len(positions) > 1:
|
|
||||||
prev = positions[-2]
|
|
||||||
|
|
||||||
annotations = []
|
|
||||||
|
|
||||||
for ann in annotation_matches:
|
|
||||||
if ann.start() >= prev:
|
|
||||||
|
|
||||||
if ann.start() > match.start():
|
|
||||||
break
|
|
||||||
|
|
||||||
ann_tag = ann.group(1).strip()
|
|
||||||
ann_arg = ann.group(2)
|
|
||||||
|
|
||||||
if ann_arg is not None:
|
|
||||||
ann_arg = ann_arg.replace("(","[").replace(")","]")
|
|
||||||
|
|
||||||
annotations.append(
|
|
||||||
{
|
|
||||||
"tag": ann_tag,
|
|
||||||
"args": ann_arg
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
func_return_type = match.group(1).strip()
|
|
||||||
func_name = match.group(2)
|
|
||||||
func_args = match.group(3).strip()
|
|
||||||
func_content = match.group(4).strip()
|
|
||||||
|
|
||||||
# function_contents.append(
|
|
||||||
# f"{func_return_type} {func_name}({func_args}) {match.group(4)}"
|
|
||||||
# )
|
|
||||||
functions.append({
|
|
||||||
"name": func_name,
|
|
||||||
"return_type": func_return_type,
|
|
||||||
"args": func_args,
|
|
||||||
"annotations": annotations,
|
|
||||||
"content": func_content
|
|
||||||
})
|
|
||||||
|
|
||||||
return functions
|
|
||||||
|
|
||||||
def create_independent_files(functions, output_dir):
|
|
||||||
|
|
||||||
for fun in functions:
|
|
||||||
|
|
||||||
filename = f"{fun['name']}.c"
|
|
||||||
with open(output_dir + filename, "w") as f:
|
|
||||||
|
|
||||||
# Write the code
|
|
||||||
f.write(fun["code"])
|
|
||||||
|
|
||||||
def extract_functions_from_file(input_file):
|
|
||||||
|
|
||||||
with open(input_file, "r") as file:
|
|
||||||
file_content = file.read()
|
|
||||||
|
|
||||||
functions = __extract_functions(file_content)
|
|
||||||
return functions
|
|
||||||
|
|
||||||
def save_functions_to_yaml(functions, output_file):
|
|
||||||
|
|
||||||
with open(output_file, "w") as file:
|
|
||||||
yaml.dump(functions, file, sort_keys=False)
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
# Build phase
|
|
||||||
FROM emscripten/emsdk AS build
|
|
||||||
RUN mkdir -p /build
|
|
||||||
WORKDIR /build
|
|
||||||
COPY src ./src
|
|
||||||
RUN emcc ./src/main.c -o ./main.wasm
|
|
||||||
RUN chmod a+x ./main.wasm
|
|
||||||
|
|
||||||
# Run phase
|
|
||||||
FROM scratch
|
|
||||||
COPY --from=build /build/main.wasm /main.wasm
|
|
||||||
ENTRYPOINT [ "/main.wasm" ]
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
# Build ed esecuzione
|
|
||||||
|
|
||||||
## Build a due fasi
|
|
||||||
Creazione del file .wasm con l'immagine di emcc e creazione del container con supporto wasm.
|
|
||||||
`docker build --platform wasi/wasm -t main-wasm .`
|
|
||||||
|
|
||||||
## Run
|
|
||||||
Esecuzione container con platform wasm.
|
|
||||||
`docker run --runtime=io.containerd.wasmedge.v1 --platform=wasi/wasm main-wasm`
|
|
||||||
|
|
||||||
# TODO
|
|
||||||
## Studio
|
|
||||||
|
|
||||||
- studio wasm
|
|
||||||
- compilare c++ con wasm
|
|
||||||
- creazione container con wasm runtinme
|
|
||||||
- definizione tag per codice
|
|
||||||
|
|
||||||
## Python module
|
|
||||||
- divide il codice in diverse task
|
|
||||||
- aggrega le task in base al target
|
|
||||||
|
|
||||||
## Build e run
|
|
||||||
- container che builda tutti i task
|
|
||||||
- run del container con wasm
|
|
||||||
Reference in New Issue
Block a user