Gojo: Experiments in porting over Golang stdlib into Mojo
https://github.com/thatstoasty/gojo/tree/main
This library is my attempt at porting over some modules and structs from Golang's stdlib. You can find the list below! Most of these topics were new to me when starting the port, so if you find bugs or opportunities for improvement feel free to drop some comments!
It's been a good learning opportunity for both Go and Mojo.
Modules
-
bufio
- Reader: Buffered io.Reader
- Scanner: Scanner interface to read data via tokens.
- bytes
- Buffer: Buffer backed by UnsafePointer[UInt8].
- Reader: Reader backed by UnsafePointer[UInt8].
- io
- Traits: Reader, Writer, Seeker, Closer, ReadWriter, ReadCloser, WriteCloser, ReadWriteCloser, ReadSeeker, ReadSeekCloser, WriteSeeker, ReadWriteSeeker, ReaderFrom, WriterReadFrom, WriterTo, ReaderWriteTo, ReaderAt, WriterAt, ByteReader, ByteScanner, ByteWriter, StringWriter
- Reader and Writer wrapper functions.
- FileWrapper: FileHandle Wrapper Reader/Writer
- STDOUT/STDERR Writer (leveraging libc).
- strings
- StringBuilder: String builder for fast string concatenation.
- Reader: String reader.
- fmt
- Basic sprintf function.
- syscall
- External call wrappers for libc functions and types.
- net
- Socket: Wraps FileDescriptor and implements network specific functions.
- FileDescriptor: File Descriptor wrapper that implements io.Writer, io.Reader, and io.Closer.
- Dial and Listen interfaces for Socket connections (for TCP only atm).
- Socket struct similar to Python's and a simple FileDescriptor struct.2 Replies
Gojo has been updated to include some UDP socket structs! I've also included some examples for some basic tcp and udp server/clients and an example of using
bufio.Scanner.
https://github.com/thatstoasty/gojo/tree/main/examples
Example UDP server using the listen_udp function
@toasty nice! looking forward to unix sockets