mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-15 08:23:41 +00:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 559ba98319 | |||
| c4219439eb | |||
| 7a9c649268 | |||
| 213d10838f | |||
| b573ef3813 | |||
| 854f91ecf2 | |||
| c2346570fb |
@@ -40,7 +40,7 @@ jobs:
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@v6
|
||||
with:
|
||||
go-version: '1.27.0-rc.2'
|
||||
go-version: '1.27.0-rc.3'
|
||||
cache: true
|
||||
- name: Restore LLVM source cache
|
||||
uses: actions/cache/restore@v5
|
||||
@@ -131,7 +131,7 @@ jobs:
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@v6
|
||||
with:
|
||||
go-version: '1.27.0-rc.2'
|
||||
go-version: '1.27.0-rc.3'
|
||||
cache: true
|
||||
- name: Build TinyGo (LLVM ${{ matrix.version }})
|
||||
run: go install -tags=llvm${{ matrix.version }}
|
||||
|
||||
@@ -23,7 +23,7 @@ jobs:
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@v6
|
||||
with:
|
||||
go-version: '1.27.0-rc.2'
|
||||
go-version: '1.27.0-rc.3'
|
||||
cache: true
|
||||
- name: Run go mod tidy
|
||||
run: go mod tidy
|
||||
@@ -36,7 +36,7 @@ jobs:
|
||||
# statically linked binary.
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: golang:1.27rc2-alpine
|
||||
image: golang:1.27rc3-alpine
|
||||
outputs:
|
||||
version: ${{ steps.version.outputs.version }}
|
||||
steps:
|
||||
@@ -160,7 +160,7 @@ jobs:
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@v6
|
||||
with:
|
||||
go-version: '1.27.0-rc.2'
|
||||
go-version: '1.27.0-rc.3'
|
||||
cache: true
|
||||
- name: Install wasmtime
|
||||
uses: bytecodealliance/actions/wasmtime/setup@v1
|
||||
@@ -204,7 +204,7 @@ jobs:
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@v6
|
||||
with:
|
||||
go-version: '1.27.0-rc.2'
|
||||
go-version: '1.27.0-rc.3'
|
||||
cache: true
|
||||
- name: Install Node.js
|
||||
uses: actions/setup-node@v6
|
||||
@@ -323,7 +323,7 @@ jobs:
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@v6
|
||||
with:
|
||||
go-version: '1.27.0-rc.2'
|
||||
go-version: '1.27.0-rc.3'
|
||||
cache: true
|
||||
- name: Restore LLVM source cache
|
||||
uses: actions/cache/restore@v5
|
||||
|
||||
@@ -34,7 +34,7 @@ jobs:
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@v6
|
||||
with:
|
||||
go-version: '1.27.0-rc.2'
|
||||
go-version: '1.27.0-rc.3'
|
||||
cache: true
|
||||
- name: Restore cached LLVM source
|
||||
uses: actions/cache/restore@v5
|
||||
@@ -129,7 +129,7 @@ jobs:
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@v6
|
||||
with:
|
||||
go-version: '1.27.0-rc.2'
|
||||
go-version: '1.27.0-rc.3'
|
||||
cache: true
|
||||
- name: Download TinyGo build
|
||||
uses: actions/download-artifact@v8
|
||||
@@ -150,7 +150,7 @@ jobs:
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@v6
|
||||
with:
|
||||
go-version: '1.27.0-rc.2'
|
||||
go-version: '1.27.0-rc.3'
|
||||
cache: true
|
||||
- name: Download TinyGo build
|
||||
uses: actions/download-artifact@v8
|
||||
@@ -176,7 +176,7 @@ jobs:
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@v6
|
||||
with:
|
||||
go-version: '1.27.0-rc.2'
|
||||
go-version: '1.27.0-rc.3'
|
||||
cache: true
|
||||
- name: Download TinyGo build
|
||||
uses: actions/download-artifact@v8
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
# tinygo-llvm stage obtains the llvm source for TinyGo
|
||||
FROM golang:1.27rc2 AS tinygo-llvm
|
||||
FROM golang:1.27rc3 AS tinygo-llvm
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get install -y apt-utils make cmake clang-17 ninja-build && \
|
||||
@@ -33,7 +33,7 @@ RUN cd /tinygo/ && \
|
||||
|
||||
# tinygo-compiler copies the compiler build over to a base Go container (without
|
||||
# all the build tools etc).
|
||||
FROM golang:1.27rc2 AS tinygo-compiler
|
||||
FROM golang:1.27rc3 AS tinygo-compiler
|
||||
|
||||
# Copy tinygo build.
|
||||
COPY --from=tinygo-compiler-build /tinygo/build/release/tinygo /tinygo
|
||||
|
||||
@@ -177,8 +177,15 @@ func Build(pkgName, outpath string, config *compileopts.Config) error {
|
||||
// Pick a default output path based on the main directory.
|
||||
outpath = filepath.Base(result.MainDir) + config.DefaultBinaryExtension()
|
||||
}
|
||||
} else if fi, statErr := os.Stat(outpath); statErr == nil && fi.IsDir() {
|
||||
var name string
|
||||
if strings.HasSuffix(pkgName, ".go") {
|
||||
name = filepath.Base(pkgName[:len(pkgName)-3]) + config.DefaultBinaryExtension()
|
||||
} else {
|
||||
name = filepath.Base(result.MainDir) + config.DefaultBinaryExtension()
|
||||
}
|
||||
outpath = filepath.Join(outpath, name)
|
||||
}
|
||||
|
||||
if err := os.Rename(result.Binary, outpath); err != nil {
|
||||
// Moving failed. Do a file copy.
|
||||
inf, err := os.Open(result.Binary)
|
||||
|
||||
@@ -68,20 +68,6 @@ func (dev *USBDevice) Configure(config UARTConfig) {
|
||||
dev.initcomplete = true
|
||||
}
|
||||
|
||||
// Attach connects the device to the USB bus, allowing the host to detect and
|
||||
// enumerate it. It can be used together with Detach to delay enumeration
|
||||
// until the USB configuration (device identifiers, classes, ...) is complete.
|
||||
func (dev *USBDevice) Attach() {
|
||||
sam.USB_DEVICE.CTRLB.ClearBits(sam.USB_DEVICE_CTRLB_DETACH)
|
||||
}
|
||||
|
||||
// Detach disconnects the device from the USB bus. To the host this appears
|
||||
// as if the device was unplugged. A subsequent Attach makes the host
|
||||
// enumerate the device again.
|
||||
func (dev *USBDevice) Detach() {
|
||||
sam.USB_DEVICE.CTRLB.SetBits(sam.USB_DEVICE_CTRLB_DETACH)
|
||||
}
|
||||
|
||||
func handlePadCalibration() {
|
||||
// Load Pad Calibration data from non-volatile memory
|
||||
// This requires registers that are not included in the SVD file.
|
||||
|
||||
@@ -71,20 +71,6 @@ func (dev *USBDevice) Configure(config UARTConfig) {
|
||||
dev.initcomplete = true
|
||||
}
|
||||
|
||||
// Attach connects the device to the USB bus, allowing the host to detect and
|
||||
// enumerate it. It can be used together with Detach to delay enumeration
|
||||
// until the USB configuration (device identifiers, classes, ...) is complete.
|
||||
func (dev *USBDevice) Attach() {
|
||||
sam.USB_DEVICE.CTRLB.ClearBits(sam.USB_DEVICE_CTRLB_DETACH)
|
||||
}
|
||||
|
||||
// Detach disconnects the device from the USB bus. To the host this appears
|
||||
// as if the device was unplugged. A subsequent Attach makes the host
|
||||
// enumerate the device again.
|
||||
func (dev *USBDevice) Detach() {
|
||||
sam.USB_DEVICE.CTRLB.SetBits(sam.USB_DEVICE_CTRLB_DETACH)
|
||||
}
|
||||
|
||||
func handlePadCalibration() {
|
||||
// Load Pad Calibration data from non-volatile memory
|
||||
// This requires registers that are not included in the SVD file.
|
||||
|
||||
@@ -89,21 +89,6 @@ func (dev *USBDevice) Configure(config UARTConfig) {
|
||||
dev.initcomplete = true
|
||||
}
|
||||
|
||||
// Attach connects the device to the USB bus by enabling the DP pull-up,
|
||||
// allowing the host to detect and enumerate it. It can be used together with
|
||||
// Detach to delay enumeration until the USB configuration (device
|
||||
// identifiers, classes, ...) is complete.
|
||||
func (dev *USBDevice) Attach() {
|
||||
nrf.USBD.USBPULLUP.Set(1)
|
||||
}
|
||||
|
||||
// Detach disconnects the device from the USB bus by disabling the DP pull-up.
|
||||
// To the host this appears as if the device was unplugged. A subsequent
|
||||
// Attach makes the host enumerate the device again.
|
||||
func (dev *USBDevice) Detach() {
|
||||
nrf.USBD.USBPULLUP.Set(0)
|
||||
}
|
||||
|
||||
func handleUSBIRQ(interrupt.Interrupt) {
|
||||
if nrf.USBD.EVENTS_SOF.Get() == 1 {
|
||||
nrf.USBD.EVENTS_SOF.Set(0)
|
||||
|
||||
@@ -46,21 +46,6 @@ func (dev *USBDevice) Configure(config UARTConfig) {
|
||||
rp.USBCTRL_REGS.SIE_CTRL.SetBits(rp.USBCTRL_REGS_SIE_CTRL_PULLUP_EN)
|
||||
}
|
||||
|
||||
// Attach connects the device to the USB bus by enabling the DP pull-up,
|
||||
// allowing the host to detect and enumerate it. It can be used together with
|
||||
// Detach to delay enumeration until the USB configuration (device
|
||||
// identifiers, classes, ...) is complete.
|
||||
func (dev *USBDevice) Attach() {
|
||||
rp.USBCTRL_REGS.SIE_CTRL.SetBits(rp.USBCTRL_REGS_SIE_CTRL_PULLUP_EN)
|
||||
}
|
||||
|
||||
// Detach disconnects the device from the USB bus by disabling the DP pull-up.
|
||||
// To the host this appears as if the device was unplugged. A subsequent
|
||||
// Attach makes the host enumerate the device again.
|
||||
func (dev *USBDevice) Detach() {
|
||||
rp.USBCTRL_REGS.SIE_CTRL.ClearBits(rp.USBCTRL_REGS_SIE_CTRL_PULLUP_EN)
|
||||
}
|
||||
|
||||
func handleUSBIRQ(intr interrupt.Interrupt) {
|
||||
status := rp.USBCTRL_REGS.INTS.Get()
|
||||
|
||||
|
||||
@@ -49,21 +49,6 @@ func (dev *USBDevice) Configure(config UARTConfig) {
|
||||
rp.USB.SetMAIN_CTRL_PHY_ISO(0x0)
|
||||
}
|
||||
|
||||
// Attach connects the device to the USB bus by enabling the DP pull-up,
|
||||
// allowing the host to detect and enumerate it. It can be used together with
|
||||
// Detach to delay enumeration until the USB configuration (device
|
||||
// identifiers, classes, ...) is complete.
|
||||
func (dev *USBDevice) Attach() {
|
||||
rp.USB.SIE_CTRL.SetBits(rp.USB_SIE_CTRL_PULLUP_EN)
|
||||
}
|
||||
|
||||
// Detach disconnects the device from the USB bus by disabling the DP pull-up.
|
||||
// To the host this appears as if the device was unplugged. A subsequent
|
||||
// Attach makes the host enumerate the device again.
|
||||
func (dev *USBDevice) Detach() {
|
||||
rp.USB.SIE_CTRL.ClearBits(rp.USB_SIE_CTRL_PULLUP_EN)
|
||||
}
|
||||
|
||||
func handleUSBIRQ(intr interrupt.Interrupt) {
|
||||
status := rp.USB.INTS.Get()
|
||||
|
||||
|
||||
@@ -510,7 +510,7 @@ func realloc(ptr unsafe.Pointer, size uintptr) unsafe.Pointer {
|
||||
lastBlock := firstBlock.findHead()
|
||||
|
||||
// Calculate the size of the original allocation body.
|
||||
oldSize := uintptr(lastBlock-firstBlock)*blocksPerStateByte + (bytesPerBlock - unsafe.Sizeof(objHeader{}))
|
||||
oldSize := uintptr(lastBlock-firstBlock)*bytesPerBlock + (bytesPerBlock - unsafe.Sizeof(objHeader{}))
|
||||
|
||||
if size <= oldSize {
|
||||
// The requested size is less than the old size.
|
||||
|
||||
@@ -47,8 +47,14 @@ func alloc(size uintptr, layout unsafe.Pointer) unsafe.Pointer {
|
||||
gcTotalAlloc += uint64(size)
|
||||
gcMallocs++
|
||||
heapptr += size
|
||||
for heapptr >= heapEnd {
|
||||
if heapptr < addr {
|
||||
// The allocation size overflowed the heap pointer.
|
||||
runtimePanic("out of memory")
|
||||
}
|
||||
for heapptr > heapEnd {
|
||||
// Try to increase the heap and check again.
|
||||
// Use > instead of >= because an allocation that exactly
|
||||
// ends at heapEnd is still within heap boundaries.
|
||||
if growHeap() {
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -43,6 +43,12 @@ func gcMarkReachable() {
|
||||
gcPauseCore(i)
|
||||
}
|
||||
|
||||
// Busy-wait until all the other cores are ready.
|
||||
for gcScanState.Load() != numCPU {
|
||||
spinLoopWait()
|
||||
}
|
||||
gcScanState.Store(0)
|
||||
|
||||
// Scan the stack(s) of the current core.
|
||||
scanCurrentStack()
|
||||
if !task.OnSystemStack() {
|
||||
@@ -53,13 +59,6 @@ func gcMarkReachable() {
|
||||
// Scan globals.
|
||||
findGlobals(markRoots)
|
||||
|
||||
// Busy-wait until all the other cores are ready. They certainly should be,
|
||||
// after the scanning we did above.
|
||||
for gcScanState.Load() != numCPU {
|
||||
spinLoopWait()
|
||||
}
|
||||
gcScanState.Store(0)
|
||||
|
||||
// Signal each core in turn that they can scan the stack.
|
||||
for i := uint32(0); i < numCPU; i++ {
|
||||
if i == core {
|
||||
|
||||
@@ -807,13 +807,13 @@ func hashmapInterfaceHash(itf interface{}, seed uintptr) uint32 {
|
||||
case reflectlite.Array:
|
||||
var hash uint32
|
||||
for i := 0; i < x.Len(); i++ {
|
||||
hash ^= hashmapInterfaceHash(valueInterfaceUnsafe(x.Index(i)), seed)
|
||||
hash = (hash * 31) ^ hashmapInterfaceHash(valueInterfaceUnsafe(x.Index(i)), seed)
|
||||
}
|
||||
return hash
|
||||
case reflectlite.Struct:
|
||||
var hash uint32
|
||||
for i := 0; i < x.NumField(); i++ {
|
||||
hash ^= hashmapInterfaceHash(valueInterfaceUnsafe(x.Field(i)), seed)
|
||||
hash = (hash * 31) ^ hashmapInterfaceHash(valueInterfaceUnsafe(x.Field(i)), seed)
|
||||
}
|
||||
return hash
|
||||
default:
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
"inheritable-only": true,
|
||||
"cpu": "esp32",
|
||||
"features": "+atomctl,+bool,+clamps,+coprocessor,+debug,+density,+dfpaccel,+div32,+exception,+fp,+highpriinterrupts,+interrupt,+loop,+mac16,+memctl,+minmax,+miscsr,+mul32,+mul32high,+nsa,+prid,+regprotect,+rvector,+s32c1i,+sext,+threadptr,+timerint,+windowed",
|
||||
"build-tags": ["esp32", "esp"],
|
||||
"build-tags": ["esp32", "esp", "espradio"],
|
||||
"scheduler": "tasks",
|
||||
"serial": "uart",
|
||||
"linker": "ld.lld",
|
||||
|
||||
@@ -6,7 +6,8 @@
|
||||
"features": "+32bit,+c,+m,+zmmul,-relax",
|
||||
"build-tags": [
|
||||
"esp32c3",
|
||||
"esp"
|
||||
"esp",
|
||||
"espradio"
|
||||
],
|
||||
"serial": "usb",
|
||||
"rtlib": "compiler-rt",
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"inheritable-only": true,
|
||||
"cpu": "esp32s3",
|
||||
"features": "+atomctl,+bool,+clamps,+coprocessor,+debug,+density,+div32,+esp32s3,+exception,+fp,+highpriinterrupts,+interrupt,+loop,+mac16,+memctl,+minmax,+miscsr,+mul32,+mul32high,+nsa,+prid,+regprotect,+rvector,+s32c1i,+sext,+threadptr,+timerint,+windowed",
|
||||
"build-tags": ["esp32s3", "esp"],
|
||||
"build-tags": ["esp32s3", "esp", "espradio"],
|
||||
"scheduler": "tasks",
|
||||
"serial": "usb",
|
||||
"linker": "ld.lld",
|
||||
|
||||
Reference in New Issue
Block a user