Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
bb90117
logic is executing
Rune-Magic Mar 21, 2026
4530f59
resolve conflicts
Rune-Magic Mar 21, 2026
50cff8c
debugging support
Rune-Magic Mar 22, 2026
d151504
Merge branch 'master' of https://github.com/beefytech/Beef
Rune-Magic Mar 22, 2026
3444edf
update naming
Rune-Magic Mar 22, 2026
9c506e3
forgor to pr fix
Rune-Magic Mar 22, 2026
875ea74
comptime output
Rune-Magic Mar 22, 2026
07f292c
Merge branch 'master' of https://github.com/beefytech/Beef
Rune-Magic Mar 22, 2026
2807d8c
comptime console output
Rune-Magic Mar 23, 2026
d03cc39
shell commands from comptime
Rune-Magic Mar 23, 2026
7415a8f
getenv, setenv in comptime
Rune-Magic Mar 23, 2026
4320112
make enum globs eval to enum type instead of int32
Rune-Magic Mar 23, 2026
49bbcd3
remove AddLibPath
Rune-Magic Mar 23, 2026
6eb4c31
Merge branch 'master' of https://github.com/beefytech/Beef
Rune-Magic Mar 25, 2026
5bfc286
remove build logic
Rune-Magic Mar 25, 2026
b26db56
remove BeefDep1_Done.txt
Rune-Magic Mar 25, 2026
931e2a8
forgor to save
Rune-Magic Mar 25, 2026
5fdca82
remove build logic but real
Rune-Magic Mar 25, 2026
89bfc97
remove BeefDep1_Done.txt (again)
Rune-Magic Mar 25, 2026
44fb251
resolve conflicts and transition to beefy's impl
Rune-Magic Mar 26, 2026
c960faa
works on my machine tm
Rune-Magic Mar 26, 2026
c5fc38f
remove write to output
Rune-Magic Mar 26, 2026
1cc7aaa
remove BeefDep1_Done
Rune-Magic Mar 26, 2026
c13c7bd
change RunCommand impl to have nothing to do with the IDE
Rune-Magic Mar 30, 2026
ebb33cb
Merge branch 'beefytech:master' into cfi
Rune-Magic Mar 30, 2026
f1909e1
remove BeefDep1_Done.txt
Rune-Magic Mar 30, 2026
c696881
remove pfn from old impl
Rune-Magic Mar 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion BeefBoot/BootApp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -812,7 +812,7 @@ bool BootApp::Compile()
mCELibProject = BfSystem_CreateProject(mSystem, "BeefLib", GetFileDir(mTargetPath).c_str());

BfProjectFlags flags = BfProjectFlags_None;
BfProject_SetOptions(mCELibProject, BfTargetType_BeefLib, "", mDefines.c_str(), mOptLevel, 0, 0, 0, flags);
BfProject_SetOptions(mCELibProject, BfTargetType_BeefLib, "", mDefines.c_str(), mOptLevel, 0, 0, 0, flags);
}

if (!mDefines.IsEmpty())
Expand Down
43 changes: 43 additions & 0 deletions BeefLibs/corlib/src/Console.bf
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ using System.Text;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
using System.Diagnostics;

namespace System
{
Expand Down Expand Up @@ -478,5 +479,47 @@ namespace System
Write("\x1B[H\x1B[J");
#endif
}

[CLink]
private static extern int32 system(char8* cmd);

public static Result<void, int> RunCommand(StringView command)
{
if (!Compiler.IsComptime)
{
int exitcode = system(command.ToScopeCStr!());
return exitcode == 0 ? .Ok : .Err(exitcode);
}

ProcessStartInfo startInfo = scope .();
startInfo.SetFileNameAndArguments(command);
startInfo.UseShellExecute = false;
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.CreateNoWindow = true;

SpawnedProcess proc = scope .();
if (proc.Start(startInfo) case .Err)
return .Err(0);

FileStream output = scope .();
FileStream error = scope .();
StreamReader outputReader = scope .(output);
StreamReader errorReader = scope .(output);
proc.AttachStandardOutput(output);
proc.AttachStandardError(error);

String buffer = scope .(1024);
while (!proc.HasExited)
{
outputReader.ReadToEnd(buffer).IgnoreError();
errorReader.ReadToEnd(buffer).IgnoreError();
if (!buffer.IsEmpty)
OutString(buffer);
}

int exitcode = proc.ExitCode;
return exitcode == 0 ? .Ok : .Err(exitcode);
}
}
}
7 changes: 6 additions & 1 deletion IDE/BeefProj.toml
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
FileVersion = 1
Dependencies = {Beefy2D = "*", corlib = "*", curl = "*"}

[Project]
Name = "IDE"
TargetType = "BeefGUIApplication"
StartupObject = "IDE.Program"

[Dependencies]
Beefy2D = "*"
corlib = "*"
curl = "*"
IDEHelper = "*"

[Platform.Windows]
IconFile = "$(ProjectDir)/Resources/Beef.ico"
ManifestFile = "$(ProjectDir)/Resources/IDE.manifest"
Expand Down
6 changes: 5 additions & 1 deletion IDEHelper/BeefProj.toml
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
FileVersion = 1
Dependencies = {corlib = "*", Debugger64 = "*", BeefySysLib = "*"}

[Project]
Name = "IDEHelper"
TargetType = "CustomBuild"

[Dependencies]
corlib = "*"
Debugger64 = "*"
BeefySysLib = "*"

[Configs.Debug.Win32]
TargetDirectory = "$(WorkspaceDir)/../IDE/dist"
TargetName = "IDEHelper32_d.dll"
Expand Down
9 changes: 9 additions & 0 deletions IDEHelper/Compiler/BfCompiler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -447,6 +447,10 @@ BfCompiler::BfCompiler(BfSystem* bfSystem, bool isResolveOnly)
mIOnTypeDoneTypeDef = NULL;
mIOnFieldInitTypeDef = NULL;
mIOnMethodInitTypeDef = NULL;
mCompilerOptionsPlatformTypeTypeDef = NULL;
mCompilerOptionsMachineTypeTypeDef = NULL;
mCompilerOptionsToolsetTypeTypeDef = NULL;
mCompilerOptionsOptLevelTypeDef = NULL;
mLinkNameAttributeTypeDef = NULL;
mCallingConventionAttributeTypeDef = NULL;
mMethodRefTypeDef = NULL;
Expand Down Expand Up @@ -7333,6 +7337,11 @@ bool BfCompiler::DoCompile(const StringImpl& outputDirectory)
mIOnFieldInitTypeDef = _GetRequiredType("System.IOnFieldInit");
mIOnMethodInitTypeDef = _GetRequiredType("System.IOnMethodInit");

mCompilerOptionsPlatformTypeTypeDef = _GetRequiredType("System.Compiler.Options.PlatformType");
mCompilerOptionsMachineTypeTypeDef = _GetRequiredType("System.Compiler.Options.MachineType");
mCompilerOptionsToolsetTypeTypeDef = _GetRequiredType("System.Compiler.Options.ToolsetType");
mCompilerOptionsOptLevelTypeDef = _GetRequiredType("System.Compiler.Options.OptLevel");

mLinkNameAttributeTypeDef = _GetRequiredType("System.LinkNameAttribute");
mCallingConventionAttributeTypeDef = _GetRequiredType("System.CallingConventionAttribute");
mMethodRefTypeDef = _GetRequiredType("System.MethodReference", 1);
Expand Down
5 changes: 5 additions & 0 deletions IDEHelper/Compiler/BfCompiler.h
Original file line number Diff line number Diff line change
Expand Up @@ -405,6 +405,11 @@ class BfCompiler
BfTypeDef* mIOnFieldInitTypeDef;
BfTypeDef* mIOnMethodInitTypeDef;

BfTypeDef* mCompilerOptionsPlatformTypeTypeDef;
BfTypeDef* mCompilerOptionsMachineTypeTypeDef;
BfTypeDef* mCompilerOptionsToolsetTypeTypeDef;
BfTypeDef* mCompilerOptionsOptLevelTypeDef;

BfTypeDef* mMethodRefTypeDef;
BfTypeDef* mNullableTypeDef;

Expand Down
10 changes: 5 additions & 5 deletions IDEHelper/Compiler/BfModule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15703,7 +15703,7 @@ void BfModule::HadSlotCountDependency()
BfTypedValue BfModule::GetCompilerFieldValue(const StringImpl& str)
{
BfProject* project = mProject;
if ((project == NULL) && (mCurMethodState != NULL) && (mCurMethodState->mMethodInstance != NULL))
if ((project == NULL) && (mCurMethodState != NULL) && (mCurMethodState->mMethodInstance != NULL))
project = mCurMethodState->mMethodInstance->mMethodDef->mDeclaringType->mProject;

if (str == "#IsComptime")
Expand Down Expand Up @@ -15750,23 +15750,23 @@ BfTypedValue BfModule::GetCompilerFieldValue(const StringImpl& str)
}
if (str == "#Platform")
{
return BfTypedValue(mBfIRBuilder->CreateConst(BfTypeCode_Int32, mCompiler->mOptions.mPlatformType), GetPrimitiveType(BfTypeCode_Int32));
return BfTypedValue(mBfIRBuilder->CreateConst(BfTypeCode_Int32, mCompiler->mOptions.mPlatformType), ResolveTypeDef(mCompiler->mCompilerOptionsPlatformTypeTypeDef));
}
if (str == "#Architecture")
{
return BfTypedValue(mBfIRBuilder->CreateConst(BfTypeCode_Int32, mCompiler->mOptions.mMachineType), GetPrimitiveType(BfTypeCode_Int32));
return BfTypedValue(mBfIRBuilder->CreateConst(BfTypeCode_Int32, mCompiler->mOptions.mMachineType), ResolveTypeDef(mCompiler->mCompilerOptionsMachineTypeTypeDef));
}
if (str == "#Toolset")
{
return BfTypedValue(mBfIRBuilder->CreateConst(BfTypeCode_Int32, mCompiler->mOptions.mToolsetType), GetPrimitiveType(BfTypeCode_Int32));
return BfTypedValue(mBfIRBuilder->CreateConst(BfTypeCode_Int32, mCompiler->mOptions.mToolsetType), ResolveTypeDef(mCompiler->mCompilerOptionsToolsetTypeTypeDef));
}
if (str == "#TargetTriple")
{
return BfTypedValue(GetStringObjectValue(mCompiler->mOptions.mTargetTriple), ResolveTypeDef(mCompiler->mStringTypeDef));
}
if (str == "#OptimizationLevel")
{
return BfTypedValue(mBfIRBuilder->CreateConst(BfTypeCode_Int32, project->mCodeGenOptions.mOptLevel), GetPrimitiveType(BfTypeCode_Int32));
return BfTypedValue(mBfIRBuilder->CreateConst(BfTypeCode_Int32, project->mCodeGenOptions.mOptLevel), ResolveTypeDef(mCompiler->mCompilerOptionsOptLevelTypeDef));
}

if ((mCurMethodState != NULL) && (mCurMethodState->mMixinState != NULL))
Expand Down
5 changes: 2 additions & 3 deletions IDEHelper/Compiler/CeMachine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2085,6 +2085,7 @@ void CeBuilder::Build()
auto beModule = irCodeGen->mBeModule;

mCeFunction->mFailed = true;
mIntPtrType = irCodeGen->mBeContext->GetPrimitiveType((mPtrSize == 4) ? BeTypeCode_Int32 : BeTypeCode_Int64);

auto methodInstance = mCeFunction->mMethodInstance;

Expand Down Expand Up @@ -2130,8 +2131,6 @@ void CeBuilder::Build()
return;
}

mIntPtrType = irCodeGen->mBeContext->GetPrimitiveType((mPtrSize == 4) ? BeTypeCode_Int32 : BeTypeCode_Int64);

for (int funcIdx = startFunctionCount; funcIdx < (int)beModule->mFunctions.size(); funcIdx++)
{
auto beFunction = beModule->mFunctions[funcIdx];
Expand Down Expand Up @@ -10528,7 +10527,7 @@ void CeMachine::CheckFunctionKind(CeFunction* ceFunction)
ceFunction->mFunctionKind = CeFunctionKind_BfpFindFileData_Release;

else if (methodDef->mName == "BfpSystem_GetTimeStamp")
ceFunction->mFunctionKind = CeFunctionKind_BfpSystem_GetTimeStamp;
ceFunction->mFunctionKind = CeFunctionKind_BfpSystem_GetTimeStamp;
else if (methodDef->mName == "BfpSystem_GetEnvironmentVariable")
ceFunction->mFunctionKind = CeFunctionKind_BfpSystem_GetEnvironmentVariable;
else if (methodDef->mName == "BfpSystem_SetEnvironmentVariable")
Expand Down
2 changes: 1 addition & 1 deletion IDEHelper/Compiler/CeMachine.h
Original file line number Diff line number Diff line change
Expand Up @@ -1361,4 +1361,4 @@ namespace std
return BeefHash<Beefy::BfMethodRef>()(key.mMethodRef) ^ BeefHash<Beefy::String>()(key.mNameMod);
}
};
}
}
Loading