Информация об изменениях

Сообщение Re[3]: Сloud functions и ограничения по ЯП от 31.07.2023 21:15

Изменено 31.07.2023 21:17 vsb

Re[3]: Сloud functions и ограничения по ЯП
Здравствуйте, Shmj, Вы писали:

vsb>>Можно, просто это никому не нужно. И Go и Rust ничем принципиально от C++ не отличаются. На Java тоже можно в память писать, ежели умеючи. Конечно же там всё ограничено на уровне виртуальных машин, иначе никак.


S>На уровне компиляции можно делать проверки.


Компилируешь на своей машине.

S>>>С Rust, как я понял, удалось за счет того, что можно отключит unsafe и оставить только safe. С C# та же петрушка, по сути — там тоже unsafe. А вот с С++ это не проканает, т.к. нету концепции safe|unsafe. Правильно я понял?


vsb>>Откуда ты это взял, что там только safe?


S>Там его вообще нет — ни в каком виде. Видимо ранее был и осталась инфа.


В AWS есть.

vsb>>Ещё обычно есть опция — просто OCI-образ,


S>Вы точно не путаете с Kuber и подобными?


Это называется AWS Fargate. По сути та же lambda.

vsb>>Ты туда деплоишь скомпилированный бинарник. Им твои исходники не нужны. Ничего они не проверяют и не могут проверять.


S>Вроде бинарник нельзя для Go.


https://docs.aws.amazon.com/lambda/latest/dg/golang-package.html

Инструкции:
GOOS=linux GOARCH=amd64 go build -tags lambda.norpc -o bootstrap main.go

zip myFunction.zip bootstrap

aws lambda create-function --function-name myFunction --runtime provided.al2 --handler bootstrap --architectures arm64 --role arn:aws:iam::111122223333:role/lambda-ex --zip-file fileb://myFunction.zip


Как видно — собирается пользователем на своём компьютере, стандартным компилятором с обычными флагами. Кладётся собранный бинарник в zip и деплоится.

S>Это же просто бинарник — как они отличат на каком ЯП он сделан?


Никак, им это не надо. Они этот бинарник запустят в окружении, которого ожидает Go и всё.
Re[3]: Сloud functions и ограничения по ЯП
Здравствуйте, Shmj, Вы писали:

vsb>>Можно, просто это никому не нужно. И Go и Rust ничем принципиально от C++ не отличаются. На Java тоже можно в память писать, ежели умеючи. Конечно же там всё ограничено на уровне виртуальных машин, иначе никак.


S>На уровне компиляции можно делать проверки.


Компилируешь на своей машине.

S>>>С Rust, как я понял, удалось за счет того, что можно отключит unsafe и оставить только safe. С C# та же петрушка, по сути — там тоже unsafe. А вот с С++ это не проканает, т.к. нету концепции safe|unsafe. Правильно я понял?


vsb>>Откуда ты это взял, что там только safe?


S>Там его вообще нет — ни в каком виде. Видимо ранее был и осталась инфа.


В AWS есть.

vsb>>Ещё обычно есть опция — просто OCI-образ,


S>Вы точно не путаете с Kuber и подобными?


https://aws.amazon.com/blogs/containers/containerizing-lambda-deployments-using-oci-container-images/

vsb>>Ты туда деплоишь скомпилированный бинарник. Им твои исходники не нужны. Ничего они не проверяют и не могут проверять.


S>Вроде бинарник нельзя для Go.


https://docs.aws.amazon.com/lambda/latest/dg/golang-package.html

Инструкции:
GOOS=linux GOARCH=amd64 go build -tags lambda.norpc -o bootstrap main.go

zip myFunction.zip bootstrap

aws lambda create-function --function-name myFunction \
--runtime provided.al2 --handler bootstrap \
--architectures arm64 \
--role arn:aws:iam::111122223333:role/lambda-ex \
--zip-file fileb://myFunction.zip


Как видно — собирается пользователем на своём компьютере, стандартным компилятором с обычными флагами. Кладётся собранный бинарник в zip и деплоится.

S>Это же просто бинарник — как они отличат на каком ЯП он сделан?


Никак, им это не надо. Они этот бинарник запустят в окружении, которого ожидает Go и всё.