麻袋系统抽象组件套件。
libuv,libsdl,gkt,qt,...只有一个。主要是列表,堆栈,队列,具有有或没有锁定机制的C的C扩展。内存的内存诊断剂,以识别免费/下流或使用(写)。文件系统事件通知,简单线程,基于事件的网络,可用于背景线程,HTTP,Websocket,JSOND,JSOND,JSON6,JSOX PARSERS,XML PARSER,导出;简化数据库连接和使用的SQLITE/ODBC通用包装器;简单的分数数字库,矢量库,过程和功能注册系统,可以在复杂的可插入系统中注册函数或接口表的函数或接口表;文件系统抽象和虚拟文件系统接口。
不是什么?它本身不是操作系统,而是缺乏任务加载程序,并且是处理分配本身;从系统请求内存并管理代码,可以在程序之间共享内存。
从header文档信息发布的文档-http://sack.sf.net(https://sourceforge.net/projects/sack/)
git通常是更新的。 GIT是主要的开发源控制系统。不再使用Mercurial。 (Source Forge已过时)
单调最好是最好的;但;好吧...也许他们太封闭了。
C单源软件包。 C/C ++可编译源和单个标头。链接到每个项目中的Relavent文档...
通过iNterop通过node.js ...暴露于v8 ...
这两个项目都使用相同的来源构建 - 使用从Github拔出的Sack的版本,使用单独的CMakelists来构建GUI版本;而不是包括合并。
git不能很好地保存钩子 - 但是子模型有点痛苦。这已经迁移到使用git子模型;这需要轻松的钩子。为加载钩子的位置设置配置将有所帮助。
在此存储库中的钩子中的挂钩将尝试将其链接到您已设置的模板中复制的任何现有钩子。
# git config --global core.hookPath .githooks
# git clone git://github.com/d3x0r/sack
# cd sack
# mkdir build # could be mkdir sack/build instead
# cd build
# cmake ../cmake_all -DCMAKE_BUILD_TYPE=Debug
### alternatively, you can just build the sack core
# cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=output
### and later build binary specifically
# cd ..
# mkdir sack-binary-build
# cd sack-binary-build
# cmake ../binary -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=output -DSACK_SDK_ROOT_PATH=../build/output
cmake_build_type(reparion/debug/relwithdebinfo/minrel)名称用于生成_solution _solution和_OUT目录。如果您使用“调试”,则目录将是'debug_solution'等。每个项目都安装在其相关<build_type> _OUT文件夹中。
ccmake或cmake-gui可用于配置编译选项。它在基于系统的猜测方面做得很公平,但是有时您想改变一些事情。
Global的配置设置具有BUILD_EXTRAS选项,该选项将在SACK中构建更多的应用程序,这些应用程序较少支持或进行测试或深入开发。
SACK ..._解决方案/核心项目的配置有许多选项,例如是否使用包括PNG/JPEG/ZLIB等或系统版本。与sqlite相同。可以启用NO_ODBC禁用ODBC库的依赖...更多。
(Linux)UnixODBC(使用CORE中使用CCMAKE的CMAKE选项可以禁用此依赖性);
(openssl?)/libressl(包括libressl 3.2.1(最新))
GUI零件(Ubuntu软件包名称,其他系统可能有所不同)
一些代码可以使用ffmpeg来生成视频/音频流播放器。 FFMPEG接口模块动态加载ffmpeg.dll,该模块应适用于存储库中的Windows;也可以建造...
我得到了使用WSL 2构建的; (WSL-安装)。和Arch Linux图像(https://github.com/yuk7/archwsl);假设安装了作为资助的构建工具
PACMAN -S制作Diffutils mingw-w64-gcc
也许是mingw-w64-pkg-config(AUR)mingw-w64-环境(AUR)mingw-w64-cmake(AUR)
git clone https://github.com/FFmpeg/FFmpeg.git
cd FFmpeg
mkdir build
../configure --arch=x86_64 --target-os=mingw32 --cross-prefix=x86_64-w64-mingw32- --prefix=output --enable-shared --disable-static
这通常是大量的小东西。它为C/C ++编译。它是一个具有一些支持/公用事业计划的图书馆;那是核心;还包括其他几种独立的应用程序。它提供了Windows和Posix之间的抽象,甚至提供POSIX的各种口味,例如Linux,Android,Mac等。它是SDL(有点),是Busybox,但不是真的。它是gtk(sorta),它是stl(堆栈,列表,队列,组成,仿制药等),它几乎都可以依靠C库。
一开始,有一个DOS串行终端程序。它是用C写成的。当然,基本的容器类型缺少,因此基本上每个结构都是旧事物的新实现。但这是简洁的,没有额外的东西,如果是通用类,除了特定情况外,可能会提供未使用的东西。这实际上有线程;它在可恶的州有几个说明堆栈,可以放弃时间。
它演变成一个称为NIPC(新的Inter Process Communications)的专有OS,它不仅具有线程,而且可以将DOS .EXE文件作为过程加载到线程中(不仅是.com文件)。这以圆形旋转方式管理了内存分配,显示访问,磁盘加速和CPU时间。一开始就没有睡眠,但是后来的线程可能会放弃计划,甚至没有被唤醒。在386-25上,它每秒得到1500个周期。但是它的大部分实际工作都是中断处理,与其他系统进行通信。
然后是Windows 3.1 ...和NT 3.51短时间内,直到NT4出来。因此,现在所有的自定义线程控件都相当过时了,但是那个分配器,这很好。共享内存管/队列/等以及套接字有很多开发。 NIPC也有插座。以UDP/TCP/IP堆栈的形式写入直接写入的网卡;当然,API是基于事件的,因为我真的不知道任何其他方法可以处理网络。当然有伯克利插座,他们告诉我我应该实施该API,这是非常令人费解的……我必须坐下来等待数据?
然后是互联网,有一个隐士的生活,为那些不会被抓住的人钉住了,从改变锁的人那里酸痛,那里有“ vurt”。
在这里和那里的小事上有很多修补,这让我自己很有趣,这让我很有趣。一些建设性的几何算法非常适合凸固体...
因此,在这里,核心确实形成了自己的核心。它是内存分配器(具有hold()操作,允许在所有者释放后的内存块(允许存储块)的类型(文本,列表,堆栈,队列,...)。那并使用文件备份的堆作为可以重新加载的持续内存,并在其现有内存状态下恢复程序。和固定的网络;将民意测验变成基于事件的内容。毕竟,从使用一个waitformuitpleobjects()开始的日子,网络已经发展了很多,毕竟,对于任何人来说,64个插座还不够吗? (no,2000个连接的客户存在问题,完全失败了)。大约在这个时候,启动了图形接口层。受Allegro的启发,并最初采用其ImageFile_tag {}结构,实现了专用的32位色路路径例程。 Allegro支持了各种像素类型,这些像素类型的速度仍然可以通过间接功能指针来减慢。我有一段时间的组装版本的某些块拷贝和线条例程ASM和MMX口味。到SSE出来时,编译器在优化C上做得非常好,计算机的速度更快,已经很快的速度要快得多,以至于对各种平台/编译器的维护性都使它固定了。一旦您可以绘制图像,那么这只是使系统显示它们的问题,因此完成了Windows界面,只需使用Linux Framebuffer(从来都不是很快)。
因此,鉴于这是一个平台,将其作为基于袋装的应用程序的Dekware表格并最终表现出来。用作图书馆的测试固定装置。
因此,有一个单个图像库和渲染库,因此它们都被包装成一个大包装。 (Cmake仍然具有build_monolethic选项,现在可能已经被相当折断了)。当时我是在使用Dekware玩很多泥浆(甚至为其他在freebsd上运行的人提供了Dekware,with non-gnu make;这是一种痛苦...我是否提到过,那时我正在使用Make Make Make Make Make Make For Makefiles for Make For Systems,这实际上是袋装吗?)在此之前,这只是我在上一份工作中学到的模式之后的“常见”。麻袋是一个大袋子。一个袋子可以容纳5个袋子,但是一个麻袋可以容纳25个袋子。袋子是一个基本的骨料组,或一个子模块……这本身可以被承诺并且不会影响其他任何东西;和麻袋里有很多袋子。
因此,有一项新工作,构建了新软件,我能够很快利用麻袋并构建应用程序,该应用程序将在Windows或Linux上使用相同的代码运行,而没有#ifdef。我使用SYSVIPC消息队列开发了MSGSVR层,并为应用程序做了一个公共显示驱动程序。从那以后,我想我认为它已经足够折断了,需要杀死并重做。那时,我已经有OpenGL,GL2,GLES,QNX,WebSocket/HTML帆布显示驱动程序;消息系统看起来不错,但真的很糟糕。 (它仍然存在,有些事情仍然使用;它有效。...)在这里,在这份新工作中,我必须向其他人介绍我的图书馆;我没有意识到“麻袋”除了我的意图外,这完全意味着什么。当我制作这个项目(牛奶 - 模块化界面布局套件)时,它变得不好,这是基于我的麻袋。或来自...
随着时间的流逝,出于演示目的,测试和通用实用程序,袋子下的“ UTILS”文件夹是基于麻袋的真正微小的应用程序;还有一个“游戏”文件夹,其中包含更接近应用程序的内容。如果没有其他原因,则没有参考代码。
因此,有一个矢量数学库(Remeber for建设性地理?),一个分数数学库,它存储了编号数字/分母整数;这用于在GUI袋中进行缩放。有一个定时器的包装纸;像Windows settimer一样,也有addTimer();计时器和线程(threadto()而不是pthread_create/createThread/....)。
Intershell是一个程序,用于快速生产全屏专用功能应用程序(售货亭接口,显示和标牌)。它支持透明的窗口,因此您可以在现有动画内容上分层静态内容,也许会使用VLC之类的内容(尽管只有使用FFMPEG作为Intershell中的Dropin控件播放视频的效用很小)。
来源通常是分开的,需要他人最少的依赖。总有一天,这应该梳理到可以在更高级别上利用的实际依赖树。
if( options/version == 1 ) option set options/version=2... option default otheroption/app/color=12344以及以上排序的某个地方... 11)过程注册表,允许注册值,功能和类型以供以后消耗。 PSI控制注册表基于此注册表树。树上的名称可以倾倒以进行以后的浏览(例如,调试,最终在哪里?)。该模块也是库DeadStart,它读取Interface.conf并处理加载其他模块,或根据指定的选项将别名配置为接口。 (这至少值得一个整个Wikipage)
12 ... n)与这个抽象库一起编写的许多小公用事业,通常在所有系统上都起作用。
某些不同的基本功能 - 创建一个进程,有效地处理插座,文件系统摘要(即使是一个示例虚拟文件系统,它显示了如何实现自己的文件系统接口),ping(RAW Sockets),ARP,A WHOIS查询驱动程序,现在有点过时,现在,Windows Service Hook来编写自己的服务。即使是刚刚运行任意可执行的示例服务。语言翻译系统(没有什么特别的或神奇的)。
n+1)互换;这是一个通用应用程序布局处理程序。它可以使用通用控件处理高级插件,即使在部署后也可以轻松放置。可以通过接口轻松加载小插件,从而为用户代码提供简单的事件接口。
n+10)DEKWARE-上述所有;它可以加载互换,然后扩展按钮以提供脚本。终端,一般脚本处理实用程序...
图像和渲染库是通过接口连接的。接口是按名称请求的功能指针结构。接口可能会被混合使用,因此,如果视频加载为“ video.opengl”,则可以创建一个称为“视频”的别名来选择默认情况下的几个。
图像为32位颜色;有一些功能可以提供平台有序的dwords来从组件创建颜色或从颜色中获取组件。在内部,只有几个针对32位颜色传输和操作进行了优化的紧密循环。早在2000年,我就搜索了“ 64位颜色”,该颜色内部存在于视频卡上,以提高精度(精度丢失的小数)...但是通常,用户无法区分256种颜色的每个级别,因此它足够了。
Linux通过Navtive X Now Android支持Linux可以使用GLES2或本机framebuffer(AnativeWindow?)Windows Windows可以使用Win32 Windows,OpenGL,D3D(大致),在OpenGL中,Windows/Controls在3D空间中创建的Windows/Controls可以在3D空间中变成表面,可以在其他3D物体周围和周围呈现。 (这就是为什么图像层是一个可插入的接口,因为绘制操作会变成OpenGL调用)。所有人都可以使用浏览器可以连接到的网络Interafce的代理,将绘制命令贴在BRWSER上以执行...
开始了一个Vulkan层,这将简化一些事情。着色器的图像OpenGL接口确实可以将Vulkan用作后端...但是现在它们有些灵活...因此,也许以Vulkan的方式实现了更深层次的API。
这可以更好地作为节点GUI实现
这是一个控制库,建立在控件类别的注册回调上。该库是在图像和渲染器接口上构建的...它跟踪更高级别的内容,例如滑块,列表框,按钮,并根据每个类提供自定义的扩展名。
Dekware Build Product是泥客户/泥浆。可在d3x0r.org或www.d3x0r.org上获得预制版本的文档和下载。
节点插件将核心库支持向JavaScript展示。提供Websocket,HTTP,JSON,JSOX PARSER,SQLITE/ODBC接口。
NPM软件包和GIT存储库
节点插件包含来自SACC.VF的所有接口,但也开始实现Interfce到GUI子系统。
NPM软件包和GIT存储库。
GIT存储库是一个植根于sack.vfs的分支,只是对现有接口的添加。尽管它确实从使用sack.cc amaglamation改变了,但它使用cmake外部项目从github下载sack存储库。