rd4com
rd4com
MModular
Created by rd4com on 10/18/2024 in #community-showcase
:hatching_chick: mojo-new-web-framework
Yes that's an amazing great idea !
8 replies
MModular
Created by rd4com on 10/18/2024 in #community-showcase
:hatching_chick: mojo-new-web-framework
No description
8 replies
MModular
Created by aurelian on 10/19/2024 in #questions
why is this return a copy?
There is the manual (which is really good ❤️‍🔥): https://docs.modular.com/mojo/manual/values/lifetimes
39 replies
MModular
Created by aurelian on 10/19/2024 in #questions
why is this return a copy?
@aurelian , there is a video that explains this: https://www.youtube.com/watch?v=9ag0fPMmYPQ&ab_channel=Modular
39 replies
MModular
Created by rd4com on 10/18/2024 in #community-showcase
:hatching_chick: mojo-new-web-framework
The idea is: "The back-end and the front-end in the same structs!" It works with websockets, a Dict is on the server for visitors states, that way, less complixity 👍 Doing it that way removes the need for creating rest API, events are sent trough websockets, which is the session, and server send a dom-tree as json then the browser just render it.
8 replies
MModular
Created by jmky on 10/7/2024 in #questions
Is there a disdain for Rust from the Mojo team?
It would not make sense to move lifetimes out of the parameter world, because things can be parametrized on lifetime, and lifetimes can be parametrized. As a superset of python, mojo have theses [] for generics(parametrization), that's all there is to it really 👍
23 replies
MModular
Created by jmky on 10/7/2024 in #questions
Is there a disdain for Rust from the Mojo team?
# print
def main():
print("hello world")

# create variable (not learned types yet)
def main2():
a = "hello world"
b = 1
print(a, b)

# print trough function
def printer(a):
print(a)
def main3():
a = "hello world"
printer(a)

# modify variables
def add_one(inout a: Int):
a+=1
def main4():
a = 0
add_one(a)
print(a)

# here there is another gradual step (currently worked on)
# (create auto dereferenced reference and not learned lifetime yet)

# create safe reference (not learned lifetime yet)
def main5():
a = 0
b = Pointer.address_of(a)
a+=1
print(b[])

# return auto dereference (not learned lifetime yet)
def return_ref(arg: List[Int])->ref[arg]List[Int]:
return arg

def main6():
a = List(1,2,3)
a.append(4)
print(return_ref(a)[3])

# return mutable auto dereference (not learned lifetime yet)
def return_mut_ref(inout arg: List[Int])->ref[arg]List[Int]:
return arg

def main7():
a = List(1,2,3)
return_mut_ref(a).append(4)
print(len(a))


# return inferred mutability auto dereference (not learned lifetime yet)
def return_inferred_mut_ref(ref[_]arg: List[Int])->ref[arg]List[Int]:
return arg

def main8():
a = List(1,2,3)
return_mut_ref(a).append(4)
print(len(a))

# return immutable auto dereference
def return_immutable_ref[L:ImmutableLifetime](ref[L]arg: List[Int])->ref[L]List[Int]:
return arg

def main9():
a = List(1,2,3)
a.append(4)
print(return_immutable_ref(a)[4])
print(len(a))


# return mutable reference
def return_mutable_ref2[L:MutableLifetime](ref[L]arg: List[Int])->Pointer[List[Int],L]:
return Pointer.address_of(arg)

def main10():
a = List(1,2,3)
b = return_mutable_ref2(a)
c = b
c[].append(4)
print(len(a))
# print
def main():
print("hello world")

# create variable (not learned types yet)
def main2():
a = "hello world"
b = 1
print(a, b)

# print trough function
def printer(a):
print(a)
def main3():
a = "hello world"
printer(a)

# modify variables
def add_one(inout a: Int):
a+=1
def main4():
a = 0
add_one(a)
print(a)

# here there is another gradual step (currently worked on)
# (create auto dereferenced reference and not learned lifetime yet)

# create safe reference (not learned lifetime yet)
def main5():
a = 0
b = Pointer.address_of(a)
a+=1
print(b[])

# return auto dereference (not learned lifetime yet)
def return_ref(arg: List[Int])->ref[arg]List[Int]:
return arg

def main6():
a = List(1,2,3)
a.append(4)
print(return_ref(a)[3])

# return mutable auto dereference (not learned lifetime yet)
def return_mut_ref(inout arg: List[Int])->ref[arg]List[Int]:
return arg

def main7():
a = List(1,2,3)
return_mut_ref(a).append(4)
print(len(a))


# return inferred mutability auto dereference (not learned lifetime yet)
def return_inferred_mut_ref(ref[_]arg: List[Int])->ref[arg]List[Int]:
return arg

def main8():
a = List(1,2,3)
return_mut_ref(a).append(4)
print(len(a))

# return immutable auto dereference
def return_immutable_ref[L:ImmutableLifetime](ref[L]arg: List[Int])->ref[L]List[Int]:
return arg

def main9():
a = List(1,2,3)
a.append(4)
print(return_immutable_ref(a)[4])
print(len(a))


# return mutable reference
def return_mutable_ref2[L:MutableLifetime](ref[L]arg: List[Int])->Pointer[List[Int],L]:
return Pointer.address_of(arg)

def main10():
a = List(1,2,3)
b = return_mutable_ref2(a)
c = b
c[].append(4)
print(len(a))
23 replies
MModular
Created by jmky on 10/7/2024 in #questions
Is there a disdain for Rust from the Mojo team?
It is just about parameters (you'll see as you read). There is also that thing called progressive exposure to complexity, i like that there is a progressive way of learning as you build/create, and it requires consistent choices that makes sense: (note how lifetimes are parameters, and how lifetimes can also be parametrized on mutability)
23 replies
MModular
Created by Jack Clayton on 5/11/2024 in #community-showcase
Lightbug HTTP: Mojo web framework
🥳 here is the commit: https://github.com/saviorand/lightbug_http/pull/54 (send receive upgrade)
70 replies
MModular
Created by Jack Clayton on 5/11/2024 in #community-showcase
Lightbug HTTP: Mojo web framework
Working on it 🔥 ! already have the connection upgrade to websocket and the ability to receive messages of all sizes ! It is quite difficult to implement all the features (fragments) and many things could raise. Let's focus on an example that can do receive and send. We might need to get on an audio conference and adapt it to lightbug 👍 Documentation: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#the_websocket_handshake
Would you mind if i PR a websocket.mojo to lightbug in a work_in_progress folder? (That way you can scavage the example and integrate to lightbug)
70 replies
MModular
Created by Jack Clayton on 5/11/2024 in #community-showcase
Lightbug HTTP: Mojo web framework
There is a great test suite to test websocket implementations: https://github.com/crossbario/autobahn-testsuite/ The list of projects and users that used it is impressive 👍 (ping to @a2svior)
70 replies
MModular
Created by Helehex on 8/5/2024 in #community-showcase
Thermo
+1 for undefined behaviours of globals, chased a bug: .value() on empty optional
60 replies
MModular
Created by Jack Clayton on 5/11/2024 in #community-showcase
mojo-ui-html: UI, HTML, CSS
✅ Add imports, small fixes and MutableLifetime to various widgets 👍 mojo nightly 2024.8.1517 :mojonightly:
4 replies
MModular
Created by rd4com on 8/2/2024 in #community-showcase
🔥🎨🎛 mojo_neovim_theme_app
✅ Add imports to reflect mojo nightly mojo 2024.8.1517
3 replies
MModular
Created by Jack Clayton on 5/11/2024 in #community-showcase
Lightbug HTTP: Mojo web framework
Hello, SSE(server sent event) can be an easy to use alternative to websockets until it gets implemented with async await: https://www.pubnub.com/guides/server-sent-events/ It basically upgrade an http get request into a single-way stream. The server first set the header to "text/event-stream.", then the socket is stored into an array. Whenever the server need to send data, it just write to the socket 👍 On the browser-side, a simple js callback is set for whenever an event is received. This is particularly useful for 2D games in the browser, but also for your AI ui's ! The advantage is that it has way less complexity than websockets. If there are 10 visitors, it is as easy as looping an array and sending data (usually json). Because the socket stays open, it can be used as an session too. (ping to @a2svior)
70 replies
MModular
Created by PavanMV on 7/29/2024 in #questions
Working LinkedList using pointers
It could be a good idea to sort of do it again (re put-together the parts), and each time before adding the next feature/part, make sure that the tests passes 👍 That way you'll catch and fix the 'bugs' as they come and it is easier to think.
4 replies
MModular
Created by PavanMV on 7/29/2024 in #questions
Working LinkedList using pointers
Hello @PavanMV , the current __moveinit__ implementation does not free existing.data yet (remember, you move what is in some place, to another place, have to free the previous space)
#current implementation
fn __moveinit__(inout self, owned existing:Self):
self = Self()
self.data = self.data.alloc(1)
move_pointee(src=existing.data, dst=self.data)
self.next_ptr = existing.next_ptr
self.prev_ptr = existing.prev_ptr
#need to free existing.data
#current implementation
fn __moveinit__(inout self, owned existing:Self):
self = Self()
self.data = self.data.alloc(1)
move_pointee(src=existing.data, dst=self.data)
self.next_ptr = existing.next_ptr
self.prev_ptr = existing.prev_ptr
#need to free existing.data
4 replies
MModular
Created by rd4com on 8/2/2024 in #community-showcase
🔥🎨🎛 mojo_neovim_theme_app
No description
3 replies
MModular
Created by Jack Clayton on 5/11/2024 in #community-showcase
mojo-ui-html: UI, HTML, CSS
Hello, i'm super happy to announce that: 🆕 The repo now has a nightly branch! It serves as the dev branch and is developped using mojo nightly :mojonightly: . Some changes: - Reference instead of UnsafePointer 🎉 Enjoy!
4 replies
MModular
Created by Jack Clayton on 5/11/2024 in #community-showcase
Mojo Learning
3 replies