[SM] Расширения на Golang

Someone

Контент-мейкер
Сообщения
1,922
Реакции
1,632
Есть заинтересованные в написании расширений для Sourcemod на Golang?
Недавно написал библиотеку на Go, которая частично реализует функции расширения для Sourcemod.

Выглядит примерно так:
1652370836850.png
1652370856607.png
Нативы абсолютно для примера, не более. Функционала реализовано больше, если что.

Сразу оговорюсь, что расширения на Go (1.18) не могут заменить расширения на C++.

Этому есть несколько причин:
  1. Производительность. И нет, проблема не в самом коде, а в том, как Go взаимодействует с языком C. При 2500000 вызовах за раз, у расширения на C++ ушло ~0.034 секунды на выполнение, а у Go (1.17) ~7.4 секунды. Неприятно конечно, но что есть, то есть. Код бенчмарка не покажу - лень.
  2. Код на костылях.
  3. Только Linux.
  4. Язык явно не для этого.
  5. Что-то еще, о чем я не знаю, но оно точно есть.
Код пока никуда не выкладывал, есть что доделать.

Собственно, кто-нибудь заинтересовался?
 

ykpon

Владыка
Сообщения
504
Реакции
277
Код бенчмарков интересно посмотреть.

И почему только Linux? И что из себя представляет твоя библиотека? Интерпретатор для плагинов на го? Их компилить не нужно для сервера?
 

Someone

Контент-мейкер
Сообщения
1,922
Реакции
1,632
И почему только Linux
Потому что на Windows нельзя подгружать несколько динамических библиотек Go в одно приложение.
Интерпретатор для плагинов на го? Их компилить не нужно для сервера?
Библиотека, которая оборачивает методы Sourcemod для расширений. Она не интерпретируется, а компилируется в .so файл и работает как и другие расширения по типу SteamWorks, DHooks, PTaH и т.п..
Сообщения автоматически склеены:

Кстати говоря, есть некая надежда на ускорение через компиляцию на GCCGO, но там есть свои заморочки и недостатки.
 

Вложения

  • test_native.sp
    958 байт · Просмотры: 16
Последнее редактирование:
Сверху